CQB
@CQB
Чебупель

Каким образом загружать несколько файлов из формы, при этом, обрабатывая их через Intervention Image?

Привет.
Пытаюсь создать контроллер, который будет принимать несколько файлов из формы, а так же, накладывать на них ватермарк интервеншеном.

Собсна, вот форма:
<form action="route('images.upload', $product->id)" enctype="multipart/form-data" method="post">
    <input type="file" name="images[]" class="form-control-file" multiple>
    <button type="submit">Загрузить картинки... или не загрузить? Вот в чём вопрос</button>
</form>

А вот контроллер:
public function upload(Request $request)
{
    $files = $request->file('image');

    foreach($files as $file){
        $image = Image::make($file)->insert($watermark, 'bottom-right', 100, 100); // на эту строку, если что, ругается

        $image->save($path);
 }

    return redirect()->route('index');
}

В ответ лара мне говорит, что дан объект, а надо массив. И возвращает такую ошибку:
Symfony\Component\Debug\Exception\FatalThrowableError
Argument 1 passed to Illuminate\Database\Eloquent\Builder::make() must be of the type array, object given

И как бытб?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
neuotq
@neuotq
Прокрастинация
Ну первое у вас есть наверное опечатка, здесь нужно images, тк в форме images
$files = $request->file('images');
Далее, как я понимаю здесь
Image::make($file)->insert($watermark, 'bottom-right', 100, 100)

Вы хотите вызвать экземпляр класса Intervention\Image, но одновременно видимо у вас и модель называется Image, и подключается позже, а значит php воспринимает это как App\Image.
Значит вам нужно Intervention\Image добавлять другим алиасом, (меняйте в config/app.php , раздел aliases).
Ну и не забывайте, что после этих исправлений, у вас будет просто загрузка фото, без сохранения в БД, поэтому если нужно еще сохранить что-то в БД, например в вашу модель Image, то нужно дополнительно писать код.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы