1. 程式人生 > 其它 >檔案上傳報錯:Current request is not a multipart request的解決辦法

檔案上傳報錯:Current request is not a multipart request的解決辦法

原文連結: https://blog.csdn.net/u013168084/article/details/107911335

1.問題現象

寫在檔案上傳介面時,傳入引數有MultipartFile檔案和其他型別引數,如圖所示。

結果前端呼叫時報錯org.springframework.web.multipart.MultipartException: Current request is not a multipart request,並且發現orgId引數是會拼接到url中的,顯然沒有一起傳入。

2.問題分析

顯然從報錯資訊來說,是因為使用springboot製作excel表格上傳時候報錯,上傳檔案用的Content-Type應該是multipart/form-data,於是前端在介面content-type設定為application/json,上傳檔案介面測試去掉content-type屬性或content-type設定為multipart/form-data。但是發現仍然報相同的錯誤。於是上網查了一下各種解決思路,比如把MultipartFile檔案引數放在第一個,發現還是沒有用。

3.解決辦法

3.1 將檔案和其他引數封裝起來再傳入

正在我百思不得其解的時候,發現orgId引數是會拼接到url中的,顯然沒有一起傳入。於是考慮將兩個不同格式的引數封裝到實體類中傳入。

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{

}
結果發現沒有報錯,問題解決了。

3.2 不指定傳入引數格式

但如果我不想每次上傳檔案都通過傳入實體類的方法,於是考慮不指定引數格式傳入。那就不去掉前面註解試試看。

public ResponseBean ImportUsers(MultipartFile file,String orgId,HttpServletRequest request) throws Exception {

}
發現依然沒有報錯了,說明不加註解的方法也可以解決問題。