質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

722閲覧

fetchAPIで送信したファイルデータをPHPで取得できない

suika11

総合スコア166

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2022/05/14 04:22

前提

fetchAPIで送信した画像ファイルをコントローラーのアクションで処理したいのですが、$request->file()で取得できません。
非同期でjsから送信されてきた画像ファイルを取得したいです。

該当のソースコード

javascript

1 $('#profileModal .save').click(() => { 2 let fd = new FormData(); 3 fd.append('icon', $('#profileModal #icon').prop('files')[0]); 4 5 fetch('/users/update', { 6 method: 'PATCH', 7 body: new URLSearchParams({ 8 icon: fd, 9 }), 10 headers: { 11 'X-CSRF-TOKEN': '{{ csrf_token() }}' 12 }, 13 }).then(res => { 14 return res.json(); 15 }).then(data => { 16 console.log(data); 17 }).catch(err => { 18 }); 19 });

php

1 public function update(Request $request) 2 { 3ここで取得したいができない 4 return response()->json(['icon' => $request->file('icon')]); 5}

web.php

1Route::patch('/users/update', [UserController::class, 'update']);

試したこと

下記の記事を参考にfetchAPI処理を記述したが、うまく取得できず
Laravelのファイルアップロード処理をFetchAPIで書き直した

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
PHP 8.1.1
Laravel 8.79.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

bodyの設定がおかしいからでは?
body自体がformDataを指定する必要があるので

sample

javascript

1<script> 2document.addEventListener('click',e=>{ 3 let file; 4 if(e.target.matches('.save') && (file=icon.files[0])){ 5 const fr = new FileReader(); 6 fr.addEventListener('load',e=>{ 7 const type=file.type; 8 if(["image/jpeg","image/gif","image/png"].includes(type)){ 9 const blob=new Blob([e.target.result],{type}); 10 const body=new FormData(); 11 body.append(file.name,blob,file.name); 12 const method="post"; 13 const url="sample.php"; 14 fetch(url,{method,body}).then(res=>res.text()).then(console.log); 15 } 16 }); 17 fr.readAsArrayBuffer(file); 18 } 19}); 20</script> 21<input type="file" id="icon"> 22<input type="button" class="save" value="save">

//sample.php

PHP

1<?php 2print_r($_FILES);

投稿2022/05/16 04:45

編集2022/05/17 03:10
yambejp

総合スコア114968

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suika11

2022/05/16 09:08

コメントありがとうございます body: new URLSearchParams({ icon: fd, }), ではなく body: fd, ということですか?
yambejp

2022/05/17 02:47

#iconはtype=fileにユーザーが任意に設定したファイルで間違いないですか?
suika11

2022/05/17 22:02

はい、その通りです
yambejp

2022/05/18 00:25

追記したsampleを参考にしてみてください
suika11

2022/05/19 05:04

どうも空の配列が返ってきてしまいます
yambejp

2022/05/19 05:07

> どうも空の配列が返ってきてしまいます 何をしたときにどうなって、そう判断していますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問