如何从Laravel中的资源中获取图像?

0sgqnhkj  于 2023-08-08  发布在  其他
关注(0)|答案(6)|浏览(127)

我上传所有用户文件到目录:

/resources/app/uploads/

字符串
我尝试通过完整路径获取图像:

http://localhost/resources/app/uploads/e00bdaa62492a320b78b203e2980169c.jpg


但我得到错误:

NotFoundHttpException in RouteCollection.php line 161:


如何通过此路径获取图像?
现在我尝试在根目录/public/uploads/中uplaod文件:

$destinationPath = public_path(sprintf("\\uploads\\%s\\", str_random(8)));
$uploaded = Storage::put($destinationPath. $fileName, file_get_contents($file->getRealPath()));


它给了我错误:

Impossible to create the root directory

vxqlmq5t

vxqlmq5t1#

您可以专门为显示图像创建路径。
举例来说:

Route::get('/resources/app/uploads/{filename}', function($filename){
    $path = resource_path() . '/app/uploads/' . $filename;

    if(!File::exists($path)) {
        return response()->json(['message' => 'Image not found.'], 404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

字符串
所以现在你可以转到localhost/resources/app/uploads/filename.png,它应该显示图像。

h79rfbju

h79rfbju2#

您可以在您的刀片文件上尝试此操作。图像文件夹位于公用文件夹中

<img src="{{URL::asset('/images/image_name.png')}}" />

字符串
对于Laravel的后续版本(5.7以上):

<img src = "{{ asset('/images/image_name.png') }}" />

up9lanfz

up9lanfz3#

如果要从刀片式服务器调用,请尝试{{asset('path/to/your/image.jpg')}}

$url = asset('path/to/your/image.jpg');如果你想在你的控制器。
希望有帮助=)

ax6ht2ek

ax6ht2ek4#

正如@alfonz提到的,resource_path()是获取资源文件夹目录的正确方法。要获取特定的文件位置,代码如下所示

$path = resource_path() . '/folder1/folder2/filename.extension';

字符串

kyvafyod

kyvafyod5#

首先,更改config/filesystems.php

'links' => [
        public_path('storage') => storage_path('app/public'),
        public_path('resources') => resource_path('images'),
    ],

字符串
然后正常运行

asset('resources/image.png')


您将获得文件URL。

s3fp2yjn

s3fp2yjn6#

Laravel 10 Asset Bundling(Vite)

如果你想处理和版本化存储在resources/images中的所有图像,你应该在你的应用程序的入口点resources/js/app.js中添加以下内容

import.meta.glob([
  '../images/**',
]);

字符串
然后像这样在Blade中引用这些资产

<img src="{{ Vite::asset('resources/images/logo.png') }}">


要让它工作,需要构建npm run build或运行Vite开发服务器npm run dev
欲了解更多信息,请访问https://laravel.com/docs/10.x/vite#blade-processing-static-assets

相关问题