WordPressテーマ『十二単』リリース 🎉

Laravelでファイルのアップロードができない時の対処法

📚 画像アップロード手順

詳しい説明などはここでは割愛し、使用したコードのみ記述する。詳しい説明はこちらなど参考になる

php artisan storage:link実行
該当ControllerのCreateメソッドに$request->icon->storeAs('/storage/icons', date("YmdHis").'_'.Auth::user()->id.'.jpg')追記
該当Viewのformに<input type="file" class="form-control" name="icon">追記

上の手順をもってStorageに画像をアップロードするフォームを作成したところエラーが出た。

🙀 エラー文

Call to a member function store() on null

エラー内容としては画像のフォームの値がnullといったところだろうか。

😸 解決方法

formにenctypeという属性がなかったのがエラー原因だった。僕のケースではenctype="multipart/form-data"をformタグに追記すると上手く実行された。

<form action="/hoge/new" enctype="multipart/form-data" method="post">
  @csrf
  <input type="text" placeholder="タイトル" name="title">
  <input type="file" name="icon">
  <textarea name="body" placeholder="本文"></textarea>
  <input type="submit" class="btn" value="投稿する">
</form>

ファイルの送信時にはenctype属性が必要なよう。

データをマルチパートデータとして送信します。フォーム内にファイルの送信欄を配置する場合は、この形式を指定しておく必要があります。

https://www.tagindex.com/html_tag/form/form_enctype.html

フォームに入力されたデータは、送信ボタンを押すことでウェブサーバーへ送信されます。 その際の送信先URLはaction属性で、データの送信方法はmethod属性で、送信するデータの形式はenctype属性でそれぞれ指定します

http://www.htmq.com/html5/form.shtml

詳しい説明はこちらの記事が参考になった。

他にも@csrfを書いていないでエラーになるケースなどが想定される。

CTAエリアイメージ

WordPressテーマ『十二単』

無料のWordPressテーマです。絶賛開発中。
詳しくみる

✒️ Writer ✒️

たかさき

しがないたかさきです。HTML/CSS/JS/PHP/Ruby/SQLちょっと書けます、Photoshopちょっと使えます。Vue勉強中、埼玉とか都内の勉強会良いのあれば教えてください〜。メディア売買経験あります、ミドルレベルでの検索結果1位何回か取ったことあります。詳しくはこちら

Follow Me:)

COMMENT

コメントする

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。


内容をご確認の上、送信してください。