如何在laravel中使用foreach循环上传多张图片

sgtfey8w  于 2023-05-08  发布在  其他
关注(0)|答案(2)|浏览(244)

我使用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();
mkh04yzy

mkh04yzy1#

默认行为是Dropzone逐个发送图像。
您不需要自动处理队列,而是将图像与表单数据沿着发送。
遵循此Dropzone指南;
https://docs.dropzone.dev/configuration/tutorials/combine-form-data-with-files

huwehgph

huwehgph2#

我对dropzone不是很熟悉,但任何laravel表单输入都应该以同样的方式工作。如果你想在控制器中迭代一个数组,你需要把输入的name值变成一个数组。例如,如果你有几个文件正在上传,在每个输入中,你会让名字像这样:注意name属性中的方括号。然后在你的控制器中,你可以把$request->my_files作为一个数组进行迭代。

相关问题