Массив Laravel с подсветкой объектов

Я пытаюсь передать изображения из AJAX в серверную часть и загрузить их, сохранить их имена в базе данных.

Мой код AJAX:

var form_data = new FormData($('.updateForm')[0]);

            $.ajax({

                method: "POST",
                url: "/updateMyPost",
                data: form_data,
                cache : false,
                contentType: false,
                processData: false,
                success: function (result) {

                    console.info(result);

                }

            });

Функция Laravel для загрузки файлов:

public function updateMyPost(Request $request){

        $name = $request->input('text');

        $images = $request->file('images');

        foreach($images as $image){

            $image_name = time() . $image->getClientOriginalName();

            $path = public_path('images');

            $img->move($path,$image_name);

        }  

    }

И это то, что мне дает $request->file("images"), когда я его распечатываю.

Array
(
    [0] => Illuminate\Http\UploadedFile Object
        (
            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => images.jpg
            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
            [hashName:protected] => 
            [pathName:SplFileInfo:private] => C:\xampp\tmp\phpAB87.tmp
            [fileName:SplFileInfo:private] => phpAB87.tmp
        )

    [1] => Illuminate\Http\UploadedFile Object
        (
            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => iphonex-TA.jpg
            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
            [hashName:protected] => 
            [pathName:SplFileInfo:private] => C:\xampp\tmp\phpAB88.tmp
            [fileName:SplFileInfo:private] => phpAB88.tmp
        )

)

Как я могу получить имя каждого изображения, а также загрузить их?

вы загружаете несколько изображений?

Salman Zafar 04.07.2019 14:10

Да, в этом случае два изображения

Grigory Volkov 04.07.2019 14:12

Проверьте мой ответ

Salman Zafar 04.07.2019 14:20
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
3
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как вы сказали, вы загружаете несколько изображений, поэтому ваш метод store() должен выглядеть следующим образом:

public function updateMyPost(Request $r)
{
    $images = $r->images;
    foreach($images as $image)
    {
        $path = $image->store('public/images');
        $image_name = $image->getClientOriginalName();

        // to store data in your table
        Model::create([
          'path' => $path,
          'name' => $image_name
        ])
    }
}

Должно ли имя функции быть «магазин»? Моя функция имеет другое имя, и ваш код не выполняет эту работу.

Grigory Volkov 04.07.2019 14:32

не имеет значения, имя функции может быть любым. это просто пример

Salman Zafar 04.07.2019 15:09

в вашем коде измените это $img->move($path,$image_name); на $image->move($path,$image_name);

Salman Zafar 04.07.2019 15:16

Я удалил строку $image = $image->toArray();, а также изменил $img->move($path,$image_name); на $image->move($path,$image_name);, и теперь это работает. Большое спасибо!

Grigory Volkov 05.07.2019 08:09

Другие вопросы по теме