コントローラーに次のコードがあります。
public function upload(Request $request)
{
$files = $request->file('uploads');
if(!empty($files)) {
foreach($files as $file) {
Storage::put($file-getClientOriginalName(),file_get_contents($file));
}
}
routes
のapi.php
を介して呼び出されます:
Route::post('/upload', [ 'uses' => 'UploadController@upload' ]);
私は郵便配達員を使用してアプリケーションをテストしています。
ヘッダー:
ボディ:
生:
POST/scotic/public/api/upload HTTP/1.1ホスト:127.0.0.1:80コンテンツタイプ:multipart/form-data; boundary = ---- WebKitFormBoundary7MA4YWxkTrZu0gW Cache-Control:no-cache Postman-Token:0caf7349-5c91-e5f1-766f-72a3f1e33900
------ WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition:form-data; name = "uploads []"; filename = "banana.png" Content-Type:image/png png data goes here .. ------ WebKitFormBoundary7MA4YWxkTrZu0gW--
$files
は、ファイルのアップロード時には空です。何が間違っていますか?
少し掘り下げた後、私は郵便配達員なしでアップローダーを動作させましたが、郵便配達員のContent-Type
に '--boundary'がないことに気付きました。 LHSは機能しますが、RHS(郵便配達員)は機能しません。
何か案は?
問題は、postmanでContent-Type
を明示的に指定していたことです。
これからの回答の1つによると post :
Content-typeヘッダーを手動で追加する必要はありません。 Postmanによって設定された値をオーバーライドしています。 POSTリクエストでform-dataを選択し、リクエストを送信して、機能するかどうかを確認します。