Laravel 5.7 - 上传到公共文件夹

Posted

技术标签:

【中文标题】Laravel 5.7 - 上传到公共文件夹【英文标题】:Laravel 5.7 - upload to public folder 【发布时间】:2019-01-27 12:16:19 【问题描述】:

我知道这个问题已经发布了好几次了,但我无法得到它。

现在我使用:

 // photo upload
 $dir = strtolower(str_random(2));
 $image = $request->file('image')->store('products/'. $dir);

完美运行,我的文件已上传到:

storage/app/products/ds/HASH.jpg

但它不是公开的,我看过文档,但我不明白如何轻松上传到公共文件夹。

我可以使用store 功能吗?我想要同样的行为:文件名是散列的,文件夹是动态创建的。

我试过了:

Storage::setVisibility($image, 'public');

但它不起作用(没有错误......)。

文档说要使用:

Storage::put('file.jpg', $contents, 'public');

但是如何填写$content 变量?我怎样才能轻松地对文件名进行哈希处理?

【问题讨论】:

您是否运行php artisan storage:link 来创建公共存储符号链接? 为什么不使用干预? image.intervention.io 是的,链接已创建,但链接使用storage/app/public/ 文件夹,现在我的图片在storage/app/ 文件夹中 这能回答你的问题吗? How to upload files in Laravel directly into public folder? 【参考方案1】:

我通常使用移动功能,这样的东西应该可以工作:

    $file = $request->file('file');

    $file_name = time() . $file->getClientOriginalName();                      

    $file_path = 'uploads/';

    $file->move($file_path, $file_name);

这会将您的文件移动到 public/uploads 文件夹...而不是 storage/app/public...

您也可以通过类似这样的方式访问存储文件,但为此您必须添加文件访问的路径和方法

    return response()->file(storage_path(''));

【讨论】:

以上是关于Laravel 5.7 - 上传到公共文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何修复“文件上传失败。”使用任何图像上传验证时出错 - Laravel 5.7

laravel 5.7 中的多个文件上传问题

未找到 Laravel 公共存储文件夹

Laravel 文档多次上传未保存到数据库

权限“公共”文件夹 Laravel

Laravel 5.2将公共文件夹更改为共享服务器上的public_html [重复]