【问题标题】:Use inserted ids from Laravel and Dropzone image uploaded data使用 Laravel 和 Dropzone 图片上传数据中插入的 id
【发布时间】:2019-08-10 13:38:44
【问题描述】:

我有一个带有 Dropzone div 的表单,用于上传带有其他数据的大量图像。

但是,由于图像是使用 ajax 上传的,因此我需要知道为这些图像分配了哪些 ID。

当我将这些 id 保存在会话数据中时,问题就出现了。它只保存第一个和最新的 id。

例如,当我提交 4 张图片时,它会返回第二个也是最后一个 id。

??????

我的控制器方法(通过 Ajax):

public function store(Request $request)
    {
        $photos = $request->file('file');

        if (!is_array($photos))
            $photos = [$photos];

        if (!is_dir($this->photos_path))
            mkdir($this->photos_path, 0777);


        for ($i = 0; $i < count($photos); $i++) {

            $photo = $photos[$i];
            $name = sha1(date('YmdHis') . str_random(30));
            $save_name = $name . '.' . $photo->getClientOriginalExtension();
            $resize_name = $name . str_random(2) . '.' . $photo->getClientOriginalExtension();

            Image::make($photo)
                ->resize(250, null, function ($constraints) {
                    $constraints->aspectRatio();
                })
                ->save($this->photos_path . '/' . $resize_name);

            $photo->move($this->photos_path, $save_name);

            $upload = new UploadedImages();
            $upload->filename = $save_name;
            $upload->resized_name = $resize_name;
            $upload->original_name = basename($photo->getClientOriginalName());
            $upload->user_id = Auth::id();
            $upload->save();

            Session::push('uploaded_images_ids', $upload->id);
        }

        return Response::json(['message' => 'Image saved Successfully'], 200);
    }

带有调试栏的响应(应该响应 4 个 id,而不是 2 个):

【问题讨论】:

    标签: php laravel dropzone


    【解决方案1】:

    您可以创建一个数组来存储您的图像和 id

    这是下面的想法

    $image_array = [];
    for ($i = 0; $i < count($photos); $i++) {
       ....
       array_push($image_array,['image_name' => $save_name, 'image_id' => $upload->id]);
    }
    

    【讨论】:

    • 是的,它有道理,但是记住这个方法控制器是通过 ajax 调用的,所以呢?恐怕 $image_array 不会对 main 可见。
    • @ErichGarcía 您可以使用现有代码。将 Session::push 放在循环之外并设置 Session::push('uploaded_images_ids', $image_array);
    • 或使用 session::set()
    • 是的,它有效!请注意,我也将 Dropzone 配置更改为 parallelUploads: 1
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2016-10-30
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2018-06-01
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多