首页 > 解决方案 > 发送多张图片但只显示一张

问题描述

因此,我遇到了一个问题,即在我的网站上创建车辆后尝试上传一些图像。我在我的网站上使用 Laravel,并使用 Bootstrap 文件输入(http://plugins.krajee.com/file-input)来处理文件的上传,但我没有使用它们内置的 ajax,而是将图像存储在单独的表单并使用 Ajax 上传该表单。如果我检查 chrome 开发工具中的网络选项卡,我可以看到发送了多个图像,但我在控制器中只看到一个图像。

HTML:

 <input id="fileupload" type="file" name="images[]" multiple data-preview-file-type="text"
            accepts="image/*" multiple="true" data-browse-on-zone-click="true">

商店图片:

   $('#fileupload').on('fileloaded', function (event, file, previewId, index, reader) {
        console.log('added image');
        imageData.append('images', file);
    });

阿贾克斯:

$.ajax({
            type: "POST",
            url: '{{ route('ajax.newVehicleImageUpload') }}',
            data: imageData,
            contentType: false,
            cache: false,
            processData:false,
        }).done( function(data) {
            console.log(data);
            if (data == true) {
                toastr.success('Successfully uploaded images.');
            }
            spinner.hide();

        }).fail(function(jqXHR, textStatus) {
            spinner.hide();
        });

PHP:

if (isset($_FILES['images'])) {
            $files = $_FILES['images'];

            $count = count((array) $files['name']);

            for ($i = 0; $i < $count; $i++) {
                $baseFileName = strtolower(str_replace(
                    ' ',
                    '_',
                    sprintf('%s-%s-%s-%s-%s-%s.jpg',
                        trim($request->year),
                        trim($request->make),
                        trim(str_replace('-', '_', $request->model)),
                        trim(Dealer::where('id', '=', \Auth::user()->dealer_id)->first()->cpin),
                        trim($request->stock_number),
                        trim(str_random(5)))
                ));

                $location = public_path('images/vehicles/' . $baseFileName);
                Image::make(
                    $files['tmp_name'][$i]
                )->resize(
                    640,
                    480
                )->save(
                    $location
                );
                $sequence++;

                $newImage = new \App\Vimage();
                $newImage->sequence = $sequence;
                $newImage->inventory_id = $inventory_id->id;
                $newImage->vehicle_id = $request->vehicle_id;
                $newImage->dealer_id = \Auth::user()->dealer_id;
                $newImage->name = $baseFileName;
                $newImage->isStockPhoto = false;
                $newImage->isDeleted = false;
                $newImage->save();


            }
            return ('true');
        }

图片: 在此处输入图像描述 在此处输入图像描述

标签: javascriptphpjquerylaravelbootstrap-file-upload

解决方案


因此,我可以保存为我提供 base64 的 reader 变量,而不是保存文件。我可以发送它并解码它。

$('#fileupload').on('fileloaded', function (event, file, previewId, index, reader) {
    console.log(reader.result);
    imageData[] = reader;
});

推荐阅读