Laravel - 找不到图片,尽管它在磁盘中。即使输入 URL 也无法访问它
Laravel - Can't find an image, though it is there in the disk. Can't reach it even through typing the URL
所以我正在 Laravel 构建一个应用程序,这是我第一次自己使用框架,除了互联网之外没有任何帮助,所以我在某些方面遇到了很多麻烦。其中之一是我上传的图像似乎无法被 laravel 找到和提供,即使它们已上传到文件系统中的正确位置。我正在使用 Valet 处理我的本地环境。另外,我已经按照文档的指示在存储和 public 之间建立了符号链接。
这是上传图片的代码:
$fileDir = 'public/enterprise/main';
$tempImage = request()->file('main_img');
$newImage = $tempImage->store($fileDir);
我是这样称呼它的:
<div class="col-xs-8"><img src="{{ asset('storage/app/'.$enterprise->main_img) }}"></div>
url laravel 似乎要达到的是这个:
http://vbi.dev/storage/app/public/enterprise/main/MgfjPKWL8DIFgHDrMccOCsOkZZH0QmFAsput07n5.jpeg
最后,我的 config/filesystems 文件:
<?php
return [
'default' => env('FILESYSTEM_DRIVER', 'local'),
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
'img' => [
'driver' => 'local',
'root' => storage_path('images')
],
's3' => [
'driver' => 's3',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'region' => env('AWS_REGION'),
'bucket' => env('AWS_BUCKET'),
],
],
];
感谢您的关注。
您应该只传递 public 目录中存储文件的文件夹,而不包括 public
,并且您可以在第二个参数中指定磁盘,如下所示:
$fileDir = 'enterprise/main';
$tempImage = request()->file('main_img');
$newImage = $tempImage->store($fileDir, 'public');
同样在视图中,asset 方法会自动为您添加 public 文件夹的路径:
<div class="col-xs-8"><img src="{{ asset($enterprise->main_img) }}"></div>
所以我正在 Laravel 构建一个应用程序,这是我第一次自己使用框架,除了互联网之外没有任何帮助,所以我在某些方面遇到了很多麻烦。其中之一是我上传的图像似乎无法被 laravel 找到和提供,即使它们已上传到文件系统中的正确位置。我正在使用 Valet 处理我的本地环境。另外,我已经按照文档的指示在存储和 public 之间建立了符号链接。
这是上传图片的代码:
$fileDir = 'public/enterprise/main';
$tempImage = request()->file('main_img');
$newImage = $tempImage->store($fileDir);
我是这样称呼它的:
<div class="col-xs-8"><img src="{{ asset('storage/app/'.$enterprise->main_img) }}"></div>
url laravel 似乎要达到的是这个:
http://vbi.dev/storage/app/public/enterprise/main/MgfjPKWL8DIFgHDrMccOCsOkZZH0QmFAsput07n5.jpeg
最后,我的 config/filesystems 文件:
<?php
return [
'default' => env('FILESYSTEM_DRIVER', 'local'),
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
'img' => [
'driver' => 'local',
'root' => storage_path('images')
],
's3' => [
'driver' => 's3',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'region' => env('AWS_REGION'),
'bucket' => env('AWS_BUCKET'),
],
],
];
感谢您的关注。
您应该只传递 public 目录中存储文件的文件夹,而不包括 public
,并且您可以在第二个参数中指定磁盘,如下所示:
$fileDir = 'enterprise/main';
$tempImage = request()->file('main_img');
$newImage = $tempImage->store($fileDir, 'public');
同样在视图中,asset 方法会自动为您添加 public 文件夹的路径:
<div class="col-xs-8"><img src="{{ asset($enterprise->main_img) }}"></div>