ファイルアップロードエラーの解決方法 現在のリクエストはマルチパートリクエストではありません
1. 問題現象
ファイルアップロードインターフェイスで書き込みを行う際、図のように入力されるパラメーターがMultipartFileファイルや他の種類のパラメーターになります。
その結果、フロントエンドの呼び出しは、エラー org.springframework.web.multipart.MultipartException を報告します。Current request is not a multipart request, and finds that the orgId parameter is spliced into the url and apparently not passed in together.
2. 問題点の分析
どうやらエラーメッセージから、それはエラーがExcelのフォームのアップロードを作成するためにスプリングブートを使用するときに報告されているため、ファイルをアップロードするために使用されるContent-Typeはmultipart/form-dataでなければなりませんので、インターフェイスのコンテンツタイプに設定されたフロントエンドは、アプリケーション/ jsonにアップロードファイルインタフェーステスト私はまだ同じエラーが報告されていたことがわかった。そこで、MultipartFileのファイルパラメータを最初に入れるなど、いろいろな解決案をググってみたところ、やはりうまくいかないことがわかりました。
3. 解決方法
3.1 ファイルや他のパラメータを渡す前にラップする
この件で頭を悩ませているうちに、orgIdパラメータがurlにスプライスされており、明らかに一緒に渡されていないことに気づきました。そこで、2つの異なるフォーマットされたパラメータをエンティティクラスにラップして渡すことを考えます。
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
@Data
public class ImportUser {
private MultipartFile file;
private String orgId;
}
public ResponseBean ImportUsers(@RequestBody ImportUser importUser,HttpServletRequest request) throws Exception{
}
public ResponseBean ImportUsers(MultipartFile file,String orgId,HttpServletRequest request) throws Exception {
}
エラーは報告されず、問題は解決されることがわかりました。
3.2 入力されるパラメーターの形式を指定しない
しかし、ファイルをアップロードするたびにエンティティクラスのメソッドを渡すのは嫌だ、渡すパラメータの形式を指定しないことを検討する。それなら、先のアノテーションを付けずに試してみてください。
public ResponseBean ImportUsers(MultipartFile file,String orgId,HttpServletRequest request) throws Exception {
}
それでもエラーが報告されなくなったので、アノテーションなしのメソッドで解決できることがわかりました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例