Я пытаюсь загрузить изображение, и я использую почтальона, и изображение не вставляется в базу данных.
это ошибка
Любые предложения о том, что я должен делать?
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());
});
вот страница почтальона
а вот и заголовки
проблема
Вы устанавливаете свойство изображения модели в объект типа \Psr\Http\Message\UploadedFileInterface
вместо строка. Модель не знает, как обращаться с объектом.
Тонкий $request->getUploadedFiles()
возвращает объект типа \Psr\Http\Message\UploadedFileInterface
а также не строка.
Решение
Чтобы получить доступ к данным изображения, сначала нам нужно получить поток:
$data = $request->getUploadedFiles();
$uploadedImage = $data['image'];
$uploadedImageStream = $uploadedImage->getStream();
Теперь, когда у нас есть поток, мы можем читать с него ломти так же, как мы бы из файла. Тем не менее, мы просто собираем все данные сразу и устанавливаем для них свойство Model:
$image->image = $uploadedImageStream->getContents();
Других решений пока нет …