php slim, как загрузить файл с помощью eloquent?

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

это ошибка

Любые предложения о том, что я должен делать?

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'image' cannot be null (SQL: insert into `images` (`image`) values ())

вот маршрут

$app->post('/images', function($request, $response, $args) {
$data = $request->getUploadedFiles();
$image = new Image();
$image->image = $data['image'];
$image->save();

return $this->response->write($image->toJson());
});

вот страница почтальона

введите описание изображения здесь

а вот и заголовки

введите описание изображения здесь

0

Решение

проблема

Вы устанавливаете свойство изображения модели в объект типа \Psr\Http\Message\UploadedFileInterface вместо строка. Модель не знает, как обращаться с объектом.

Тонкий $request->getUploadedFiles() возвращает объект типа \Psr\Http\Message\UploadedFileInterface а также не строка.

Решение

Чтобы получить доступ к данным изображения, сначала нам нужно получить поток:

$data = $request->getUploadedFiles();
$uploadedImage = $data['image'];
$uploadedImageStream = $uploadedImage->getStream();

Теперь, когда у нас есть поток, мы можем читать с него ломти так же, как мы бы из файла. Тем не менее, мы просто собираем все данные сразу и устанавливаем для них свойство Model:

$image->image = $uploadedImageStream->getContents();
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector