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 - 上传到公共文件夹的主要内容,如果未能解决你的问题,请参考以下文章