在 Laravel 中上传多个文件
Posted
技术标签:
【中文标题】在 Laravel 中上传多个文件【英文标题】:Upload multiple files in Laravel 【发布时间】:2021-05-13 19:45:50 【问题描述】:我想一次上传多张图片,但它不起作用。
刀片/视图
<form action=" url('admin/image/upload') " method="POST"enctype="multipart/form-data">
@csrf
<td><input type="text" name="Fields[0][title]" placeholder="Enter title" class="form-control" /></td>
<td><input type="file" name="Fields[0][image]" class="form-control" /></td>
</form>
控制器
$request->validate([
'Fields.*.title' => 'required|max:25|min:5',
'Fields.*.image' => 'required',
]);
if($request->hasFile('image'))
$file=$request->file('image');
$file_name=hexdec(uniqid());
$ext=strtolower($file->getClientOriginalExtension());
$file_full_name=$file_name.'.'.$ext;
$upload_path='image/';
$file_url=$upload_path.$file_full_name;
$success=$file->move($upload_path,$file_full_name);
$Fields['image']=$file_url;
foreach ($request->Fields as $key => $value)
images::create($value);
return back()->with('success', 'Image Has Been Saved Successfully.');
【问题讨论】:
检查这一行if($request->hasFile('image'))
,你没有任何名为image
的文件
我应该写什么?
我觉得你这里不需要动态字段,把name="Fields[0][image]"
改成name="image"
我需要动态字段。
如果您接受我的回答,您将获得图像和字段输入数组,您应该通过 "foreach ($request->file('image') as $img) echo $img 访问"
【参考方案1】:
请按照以下回答:
刀片文件
<form action=" url('admin/image/upload') " method="POST"enctype="multipart/form-data">
@csrf
<td><input type="text" name="Fields[]" placeholder="Enter title" class="form-control" multiple /></td>
<td><input type="file" name="image[]" class="form-control" multiple /></td>
</form>
管理员
$request->validate([
'Fields.*' => 'required|max:25|min:5',
'image.*' => 'required',
]);
if($request->hasFile('image'))
// dd($request->image)
foreach ($request->image as $file)
dd($file)
//get filename with extension
$filenamewithextension = $file->getClientOriginalName();
//get filename without extension
$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
//get file extension
$extension = $file->getClientOriginalExtension();
//filename to store
$filenametostore = $filename . '_' . time() . '.' . $extension;
return back()->with('success', 'Image Has Been Saved Successfully.');
【讨论】:
我收到一个错误“调用数组上的成员函数getClientOriginalExtension()” 通过 dd() 测试,然后一步一步进行 我复制粘贴了这个。 复制,过去,由 dd() 测试 你在dd()函数中没有得到任何数据吗?以上是关于在 Laravel 中上传多个文件的主要内容,如果未能解决你的问题,请参考以下文章