Отправка нескольких изображений, но только одно шоу - PullRequest
0 голосов
/ 19 февраля 2019

Итак, у меня возникла проблема, когда я пытаюсь загрузить некоторые изображения после того, как автомобиль был создан на моем сайте.Я использую Laravel для своего сайта и использую Bootstrap File Input (http://plugins.krajee.com/file-input) для обработки загрузки файлов, но вместо того, чтобы использовать их встроенный ajax, я сохраняю изображения в отдельной форме и загружаю эту форму с помощью Ajax.Если я проверяю вкладку «Сеть» в инструментах Chrome Dev, я вижу, что отправлено несколько изображений, но я вижу только одно изображение в моем контроллере.

HTML:

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

Store Images:

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

Ajax:

$.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');
        }

Изображения: enter image description here enter image description here

1 Ответ

0 голосов
/ 19 февраля 2019

Так что вместо сохранения файла я могу сохранить переменную reader, которая дает мне base64.Я могу просто отправить это и расшифровать.

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