画像をアップロードするフォームを作成し、画像のデータ(名前、ファイルの種類、サイズ)をDBに保存したいと考えています。
環境は整っていまして、テーブルなども作成済みです。
いざ、アップロードするとこのようなエラーが表示されます。
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into images (name, type, size) values (, , ))
※名前をname,種類をtype,サイズをsizeとしました。
コントローラの記述が間違っているように思うのですが、初心者で手探りのため改善点がいまいちわかりません。
ご指摘お願い致します。
public function upload(Request $request) { $this->validate($request, [ 'image' => [ // 必須 'required', // アップロードされたファイルであること 'file', // 画像ファイルであること 'image', // MIMEタイプを指定 'mimes:jpg,jpeg,png', ] ]); if ($request->file('image')->isValid([])) { $image = new Image(); $image->name = $request->name; $image->type = $request->type; $image->size = $request->size; $image->save(); viewの記述はこちらになります。 <form method="POST" action="{{action('TestController@upload')}}" enctype="multipart/form-data" > <label for="image">画像ファイル:</label> <input type="file" class="form-control" name="image"> <br> <hr> {{ csrf_field() }} <button class="btn btn-success"> Upload </button> </form>
そもそも画像が送信できているかどうかは確認されましたか?
Imageクラスやview側のコードも提示されたほうが良いかもしれません。
画像は送信されていると思います。
view側のコードはこちらになります。
<form method="POST" action="{{action('TestController@upload')}}" enctype="multipart/form-data" >
<label for="image">画像ファイル:</label>
<input type="file" class="form-control" name="image">
<br>
<hr>
{{ csrf_field() }}
<button class="btn btn-success"> Upload </button>
</form>
「思う」 だけでなくきちんと実態確認してください。プログラムは書いた通りにしか動きませんので
あと、こちらのコメント欄はデフォルト非表示でマークダウン使えません。そして「質問への追記修正依頼」なので、基本的に質問を編集してお返しください
コードブロックはファイルごとにわけていただければと。
あとコメント編集しているので伝わっていないかもしれませんがImageクラスのコードもお願いしますね。
こちらの使い方が不十分で申し訳ありません。
ご指摘ありがとうございます。
回答2件
あなたの回答
tips
プレビュー