2017-11-01 1 views
0

私は郵便配達を使用して画像とIMをアップロードしようとしていると、画像をデータベースに挿入されていないphp sloどのように雄弁を使ってファイルをアップロードするのですか?

これはエラー

私は何をすべきか上の任意の提案ですか?ここ

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()); 
});  

で郵便配達のページには、

enter image description here

であり、ここでヘッダは

enter image description here

ですあなたが代わりに 文字列のタイプ \Psr\Http\Message\UploadedFileInterface対象にモデル画像プロパティを設定している
+0

郵便配達員はリクエストで画像を正しく送信していますか? – bos570

+0

postmanを使って、api呼び出しをテストする方法を共有できますか? – bos570

+0

@ bos570ちょうどそれがどのように見えるかを編集しました – BARNOWL

答えて

0

問題

。モデルはオブジェクトの処理方法を知らない。

Slim $request->getUploadedFiles()は、タイプ\Psr\Http\Message\UploadedFileInterfaceおよびのオブジェクトを返します。文字列ではないです。

ソリューションは

画像データにアクセスするには、まず私たちはストリーム取得する必要があります:今、私たちはストリームを持っていることを

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

を、我々はそれチャンクから読み取ることができますと同じです。ただし、すべてのデータを一度に取得してModelプロパティに設定するだけです。

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

ありがとうございますが、私はこの 'getメンバー関数(null)でgetStream()を呼び出す 'を取得しました – BARNOWL

+0

私はイメージキーが一致しないと思われます。あなたの郵便配達のボディーキーを確認してください – Scriptonomy

関連する問題