Как загрузить много изображений в Laravel - PullRequest
0 голосов
/ 03 мая 2020

Мне нужно загрузить много картинок в Laravel. HTML Blade:

<form action="uploadImages" method="post" enctype="multipart/form-data">
    <input type="file" name="image0" id="image">
    <input type="file" name="image1" id="image">
    @csrf
    <input type="submit" value="send">
</form>

и Laravel Контроллер:

for ($i = 0; $i < count(collect($request)) - 1; $i++) {
        $image = $request->image.$i;
        $ext = $image->getClientOriginalExtension();
        if ($ext != "jpg" && $ext != "jpeg" && $ext != "png" && $ext != "gif" && $ext != "webp") {
            return "no";
        }
        $imageName = \Str::random(20).".".$image->getClientOriginalExtension();
        $image->move(public_path("images"), $imageName);
    }

Laravel ошибка возврата: вызов функции-члена getClientOriginalExtension () для строки

Что здесь может быть не так?

уточнение:

  • Код работает для одного изображения, если я беру код из l oop и устанавливаю $ request-> image0 или 1 et c. вместо $ request-> image. $ i

  • минус 1 от count (collect ($ request)) в l oop, потому что последний элемент $ request является токеном .

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Вы должны использовать $request->file('image' . $i), чтобы получить изображение вместо $request->image.$i.

Ваш код преобразует UploadedFile в string и добавляет $i к нему.

0 голосов
/ 04 мая 2020

Или вы можете легко изменить имя входных файлов на версию массива, например:

<input type="file" name="image[]" id="image">
<input type="file" name="image[]" id="image2">
<input type="file" name="image[]" id="image3">
...
<input type="file" name="image[]" id="image1000">
...