我一直在玩多个文件,我已经成功管理了如何将多个文件(在我的情况下是图像)上传到Laravel的公共/存储文件夹中,但我想升级该方法以动态创建基于文件夹用户ID。
简而言之,当用户选择让我们说10个图像时,点击提交按钮,将创建一个包含其ID的文件夹,然后这10个图像将最终出现在此文件夹中。
这是我存储图像的功能:
public function store(Request $request) {
$files = $request->file('file');
if(!empty($files)):
foreach($files as $file):
Storage::disk('photos')->put($file->getClientOriginalName(), file_get_contents($file));
endforeach;
endif;
}
文件系统:
'photos' => [
'driver' => 'local',
'root' => public_path('../public/storage'),
],
现在我被困在这里,无法让它如何让它发挥作用。非常感谢任何帮助。
答案 0 :(得分:1)
只需创建它不存在的文件夹:
public function store(Request $request) {
$files = $request->file('file');
$folder = public_path('../public/storage/' . Auth::id(); . '/');
if (!Storage::exists($folder)) {
Storage::makeDirectory($folder, 0775, true, true);
}
if (!empty($files)) {
foreach($files as $file) {
Storage::disk(['drivers' => 'local', 'root' => $folder])->put($file->getClientOriginalName(), file_get_contents($file));
}
}
}
答案 1 :(得分:0)
这就是我使用Image Intervention Library的方式,使用文件而不是存储没有给我一个错误。我正在使用Laravel 5.6
注意:对于我的场景,我正在从视图中获取帖子ID到控制器,然后根据用户ID(如果存在)为用户创建文件夹后,将帖子保存在目录下。我也在使用storage_path而不是public路径,您可以根据需要进行更改
var lines = xdoc.Descendants("LineEntity")
.Select(line => new Line
{
//Your rest of code same here
Vertices = line.Elements("Vertices").Elements("Point").Select(p => new Point
{
X = (decimal)p.Element("X"),
Y = (decimal)p.Element("Y"),
}).ToList()
}).ToList();