Laravel 5.4 未找到存储文件
Laravel 5.4 storage file not found
我正在使用 laravel 5.4。我在 storage/app/public/documents 文件夹中上传了一些文档文件,例如
$request->paper_file->store('documents');
我的文件上传成功。
在文件系统中默认存储是public
public conf 就像
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',],
但是当我点击 /storage/documents/hQqlgifnVVH8bmrRPVdZ9aFGbhLmcc7g7bHZSX4u.pdf
提示找不到404。如何解决这个问题。
默认情况下 Laravel 将文件放在 storage/app/public
目录中,该目录无法从外部 Web 访问。因此,您必须在该目录和您的 public 目录之间创建一个符号 link:
storage/app/public -> public/storage
您可以通过执行 php artisan storage:link
命令 (docs) 来做到这一点。
在laravel^5.8:
- 确保你 运行 命令
php artisan storage:link
到 link storage/app/public
和 public/storage
。
现在:
// this return some like 'public/documents/file.ext'
$path = $request->paper_file->store('public/documents');
// this return some like 'storage/documents/file.ext'
$publicPath = \Storage::url( $path) );
// this return some like '< APP_URL env variable >/storage/documents/file.ext'
$url = asset( $publicPath );
在 运行 php artisan storage:link
之后,它会在 public 文件夹中创建一个符号 link,您可以像这样检索记录 <img src='{{ asset("public/$advert6") }}' class="img-responsive">
。您应该包括 public
目录
将项目移动到不同的文件夹后,我遇到了这个问题。
如果您已经生成了存储 link,请尝试 删除 public/storage 文件夹并再次 运行:
php artisan storage:link
当您使用 Laravel 的存储功能上传图片时,它会存储在存储文件夹中。
例如:
storage/app/public/avatars/file1.png
但是当你想通过URL访问它时,你应该这样访问它:
storage/avatars/file1.png
它对我有用,使用 Laravel 7.x。
如果您来自 laravel 8.x 并且确实 运行 命令 php artisan storage:link
(创建符号 link ),但是您的代码无法正常工作,即您尝试加载的文件未显示,那么您和我一样。
刚刚 awais ahmad 提到,此解决方案对我的 laravel 8x 项目很有帮助。我没有使用资产辅助函数从我的 blade 文件中添加“存储”路径名,所以我的图像路径没有输出任何东西,但是当我像这样输入 'storage'
路径名时 asset('storage/uploads/pic1.png)
我的代码成功了!
猜猜这可能对某人有所帮助。
我正在使用 laravel 5.4。我在 storage/app/public/documents 文件夹中上传了一些文档文件,例如
$request->paper_file->store('documents');
我的文件上传成功。
在文件系统中默认存储是public public conf 就像
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',],
但是当我点击 /storage/documents/hQqlgifnVVH8bmrRPVdZ9aFGbhLmcc7g7bHZSX4u.pdf 提示找不到404。如何解决这个问题。
默认情况下 Laravel 将文件放在 storage/app/public
目录中,该目录无法从外部 Web 访问。因此,您必须在该目录和您的 public 目录之间创建一个符号 link:
storage/app/public -> public/storage
您可以通过执行 php artisan storage:link
命令 (docs) 来做到这一点。
在laravel^5.8:
- 确保你 运行 命令
php artisan storage:link
到 linkstorage/app/public
和public/storage
。
现在:
// this return some like 'public/documents/file.ext'
$path = $request->paper_file->store('public/documents');
// this return some like 'storage/documents/file.ext'
$publicPath = \Storage::url( $path) );
// this return some like '< APP_URL env variable >/storage/documents/file.ext'
$url = asset( $publicPath );
在 运行 php artisan storage:link
之后,它会在 public 文件夹中创建一个符号 link,您可以像这样检索记录 <img src='{{ asset("public/$advert6") }}' class="img-responsive">
。您应该包括 public
目录
将项目移动到不同的文件夹后,我遇到了这个问题。 如果您已经生成了存储 link,请尝试 删除 public/storage 文件夹并再次 运行:
php artisan storage:link
当您使用 Laravel 的存储功能上传图片时,它会存储在存储文件夹中。 例如: storage/app/public/avatars/file1.png
但是当你想通过URL访问它时,你应该这样访问它:
storage/avatars/file1.png
它对我有用,使用 Laravel 7.x。
如果您来自 laravel 8.x 并且确实 运行 命令 php artisan storage:link
(创建符号 link ),但是您的代码无法正常工作,即您尝试加载的文件未显示,那么您和我一样。
刚刚 awais ahmad 提到,此解决方案对我的 laravel 8x 项目很有帮助。我没有使用资产辅助函数从我的 blade 文件中添加“存储”路径名,所以我的图像路径没有输出任何东西,但是当我像这样输入 'storage'
路径名时 asset('storage/uploads/pic1.png)
我的代码成功了!
猜猜这可能对某人有所帮助。