Laravel 5.2 中的多张图片上传
Posted
技术标签:
【中文标题】Laravel 5.2 中的多张图片上传【英文标题】:Multiple Image Upload in Laravel 5.2 【发布时间】:2016-08-18 08:37:14 【问题描述】:我终于可以上传和移动图片了,但现在我想在 Laravel 上创建多个上传图片。那可能吗?我必须使用数组来制作它吗?
我可以稍微修改一下这段代码吗?
它在我的 ProductController.php 中
$picture = '';
if ($request->hasFile('images'))
$file = $request->file('images');
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$picture = date('His').$filename;
$destinationPath = base_path() . '\public\images/';
$request->file('images')->move($destinationPath, $picture);
if (!empty($product['images']))
$product['images'] = $picture;
else
unset($product['images']);
谢谢。 注意:我上面的代码来自***上的一个好心人,再次感谢;)
【问题讨论】:
【参考方案1】:在您的前端表单中,您必须使用您的字段属性名称,例如
name="images[]"
你的控制器代码会是这样的。
$picture = '';
if ($request->hasFile('images'))
$files = $request->file('images');
foreach($files as $file)
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$picture = date('His').$filename;
$destinationPath = base_path() . '\public\images';
$file->move($destinationPath, $picture);
if (!empty($product['images']))
$product['images'] = $picture;
else
unset($product['images']);
【讨论】:
如果我需要在数据库的不同字段中上传不同的图像怎么办?表示字段名称不同,其中<input>
名称也不同,比方说!
可以通过以下方式改进:$destinationPath = public_path('images');【参考方案2】:
您来自 $_POST 的输入将作为数组传入。您需要做的就是遍历它:
$picture = '';
if ($request->hasFile('images'))
$files = $request->file('images');
foreach($files as $file)
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$picture = date('His').$filename;
$destinationPath = base_path() . '\public\images/';
$request->file('images')->move($destinationPath, $picture);
【讨论】:
关于表单,我必须使用name="images[]"
还是像name="images1"
、name="images2"
、name="images3"
?
我的数据库中好像已经记录了图片的临时名称,但是移动失败了。【参考方案3】:
稍微修改代码即可上传多张图片。
public function store(Request $request)
$pid = $request->input('pid');
$input = $request->file('images');
$picture = array();
if($request->hasFile('images')) :
foreach ($input as $item):
$extension = $item->getClientOriginalName();
$name = date('Ymd') . '.' . $extension;
$destinationPath = base_path() . '/uploads/images/';
$item->move($destinationPath, $name);
$arr[] = $name;
endforeach;
$picture = implode(",", $arr);
else:
$picture = '';
endif;
DB::table('document')->insert(array('pid' => $pid,'image' => $picture));
Session::flash('message', 'Multiple pictures are uploaded successfully');
return redirect('/image-upload');
【讨论】:
以上是关于Laravel 5.2 中的多张图片上传的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Vue 多张图片上传失败,每个图片都有一个 NULL 值
Connection.php 第 729 行中的 QueryException:SQLSTATE[23000]:Laravel 5.2