我使用www.example.com上传多个图像到数据库Dropzone.js.am,能够在函数中将数据发送到控制器,但图像是作为单个图像发送的,并且我能够完美地将单个图像上传到数据库。我想使用foreach循环批量上传图像,因为我想使用图像干预来调整它们的大小。如何将图像转换为数组?
这是视图中的dropzone窗体
<form id="dropzone-form" action="{{ url('admin/alternateimages/'.$rentaldata->id) }}" class="dropzone form-horizontal" role="form" method="POST" enctype="multipart/form-data">
@csrf
</form>
这是dropzone脚本
Dropzone.autoDiscover = false;
var dzonerentalimages = new Dropzone("#dropzone-form",{
maxFilesize: 2,
maxFiles: 3,
acceptedFiles: ".jpeg,.jpg,.png",
});
dzonerentalimages.on("success",function(file,response){
console.log(response.message)
if(response.success == 1)
{
alertify.set('notifier','position', 'top-right');
alertify.success(response.message);
alternateimagestable.ajax.reload();
}
});
我在控制器中尝试了此功能,但正在为每个图像获取数据,但我想将图像作为一个数组,以便我可以使用foreach www.example.com上传它们loop.how,我可以实现这一点吗?
public function alternateimages(Request $request,$id)
{
$rentaldata=Rental_house::with('rentalalternateimages')->select('id','rental_name','location_id','rental_image')->find($id);
$data = array();
$validator=Validator::make($request->all(),
[
'file'=>'required|mimes:png,jpg,jpeg|max:2048'
]);
if($validator->fails()){
$data['success']=0;
$data['error']=$validator->errors()->first('file');
}else{
$images=$request->file('file');
dd($images);die();
2条答案
按热度按时间mkh04yzy1#
默认行为是Dropzone逐个发送图像。
您不需要自动处理队列,而是将图像与表单数据沿着发送。
遵循此Dropzone指南;
https://docs.dropzone.dev/configuration/tutorials/combine-form-data-with-files
huwehgph2#
我对dropzone不是很熟悉,但任何laravel表单输入都应该以同样的方式工作。如果你想在控制器中迭代一个数组,你需要把输入的
name
值变成一个数组。例如,如果你有几个文件正在上传,在每个输入中,你会让名字像这样:注意name属性中的方括号。然后在你的控制器中,你可以把$request->my_files
作为一个数组进行迭代。