Laravel5.4でメッセージを投稿できるアプリを作っています。
現在文字しか投稿できないので画像も投稿できるようにしたいと考えています
画像を投稿してpublicディレクトリに保存し、それを表示することはできたのですが、画像をMysqlに保存してそれを表示できるようにしたいです。
現在はメッセージのマイグレーションファイルに
$table->binary('image')->nullable(); $table->char('extension',5)->nullable();
を追加して画像と拡張子を保存する場所を作りファイル名と、拡張子を保存しそれを表示させることができるのではと考えました
保存用のコントローラーは以下のような設定にして
$extension = array( 'png' => 'image/png', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'gif' => 'image/gif', 'bmp' => 'image/bmp', ); DB::table('tweets')->insert([ 'body' => $request['body'], 'image' => $request['image'], 'extension' => $request['extension'], 'user_id' => $user_id, 'created_at'=>Carbon::now(), 'updated_at'=>$request['updated_at'], ]);
ビューではこのようにしました
{{ $tweet->image }}
これで表示しようとすると、C:\xampp\tmp\php164A.tmpというものが表示されます
Mysqlで確認したところ
id body image extension user_id
1 ああああああ [BLOB - 24 バイト] NULL 1
というような結果になっていました
ダイレクトにMysqlに保存しようとしているのですが、通常はpublicに一度保存をしてそれを異動させるようなプログラムを書くのが普通でしょうか?
今回のやり方でも間違いではないのでしょうか?
ここをこういう風に変更するとうまく行くのではないかなどもしありましたらご教授いただけないでしょうか?よろしくお願いします
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/27 09:25