檔案上傳報錯: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 {
}
發現依然沒有報錯了,說明不加註解的方法也可以解決問題。