我知道这个问题已经发布了好几次了,但我不明白。
现在我使用:
// 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
变量?如何轻松地对文件名进行哈希处理?
答案 0 :(得分:0)
我通常使用move函数,类似这样的方法应该起作用:
$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(''));