找不到Laravel 5.4存储文件

时间:2017-04-22 16:31:35

标签: php laravel laravel-5.3

我正在使用laravel 5.4。我在存储/ app / public / documents文件夹中上传了一些文档文件,如

$request->paper_file->store('documents');

我的文件已成功上传。

文件系统默认存储中的

是公共的 和公众的关系就像

'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',],

但是当我点击/storage/documents/hQqlgifnVVH8bmrRPVdZ9aFGbhLmcc7g7bHZSX4u.pdf 它说找不到404.如何解决这个问题。

6 个答案:

答案 0 :(得分:18)

默认情况下,Laravel将文件放在storage/app/public目录中,该目录无法从外部网络访问。因此,您必须在该目录与公共目录之间创建一个符号链接:

storage/app/public -> public/storage

您可以通过执行php artisan storage:link命令(docs)来执行此操作。

答案 1 :(得分:2)

将项目移动到不同的文件夹后,这个问题发生在我身上。 如果您已经生成了存储链接,请尝试删除 public/storage 文件夹并再次运行:

php artisan storage:link

答案 2 :(得分:1)

在laravel ^ 5.8中:

  • 确保您运行命令php artisan storage:linkstorage/app/publicpublic/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 );

答案 3 :(得分:1)

当你使用 Laravel 的存储功能上传图片时,它会存储在一个存储文件夹中。 例如: storage/app/public/avatars/file1.png

但是当你想通过 URL 访问它时,你应该像这样访问它:

storage/avatars/file1.png

它对我有用,使用 Laravel 7.x。

答案 4 :(得分:0)

运行php artisan storage:link后,它将在公用文件夹中创建一个符号链接,您可以像 <img src='{{ asset("public/$advert6") }}' class="img-responsive">这样检索记录。您应该包含public目录

答案 5 :(得分:0)

如果您来自 laravel 8.x 并且确实运行了命令 php artisan storage:link(创建符号链接),但是您的代码不起作用,即您尝试加载的文件没有显示,那么你和我一样。

刚刚提到了 awais ahmad,这个解决方案对我的 Laravel 8x 项目很有帮助。我没有使用资产辅助函数从我的刀片文件中添加“存储”路径名,所以我的图像路径没有输出任何东西,但是当我像这样输入 'storage' 路径名时 asset('storage/uploads/pic1.png) 我的代码工作了!

猜猜这可能对某人有所帮助。