postman中springboot上传文件Missing initial multi part boundary

       如果在postman中设置了Context-type为multipart/form-data以及file设置,如下图:

而我的调用的上传方法仅仅只是用了@RequestMapping("/xxxx"),并且使用MutipartFile,如下图:

 

的时候,可能遇到的错误信息如下(报错信息看加粗与下划线部分就行了)

org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: Missing initial multi part boundary
    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:124)
    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:115)
    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:88)

Caused by: java.io.IOException: Missing initial multi part boundary
    at org.eclipse.jetty.util.MultiPartInputStreamParser.parse(MultiPartInputStreamParser.java:613)
    at org.eclipse.jetty.util.MultiPartInputStreamParser.getParts(MultiPartInputStreamParser.java:482)
    at org.eclipse.jetty.server.MultiParts$MultiPartsUtilParser.getParts(MultiParts.java:112)
    at org.eclipse.jetty.server.Request.getParts(Request.java:2382)
    at org.eclipse.jetty.server.Request.extractContentParameters(Request.java:529)
    at org.eclipse.jetty.server.Request.getParameters(Request.java:430)
    at org.eclipse.jetty.server.Request.getParameterMap(Request.java:1068)
    at javax.servlet.ServletRequestWrapper.getParameterMap(ServletRequestWrapper.java:203)
    at javax.servlet.ServletRequestWrapper.getParameterMap(ServletRequestWrapper.java:203)
    at javax.servlet.ServletRequestWrapper.getParameterMap(ServletRequestWrapper.java:203)
    at javax.servlet.ServletRequestWrapper.getParameterMap(ServletRequestWrapper.java:203)
    at com.hsjry.channel.guard.biz.oauth2.filter.ParameterHttpServletRequest.getParameterMap(ParameterHttpServletRequest.java:47)

其实,从上面的错误信息们就可以看到,大概就是是说multipart少了对参数boundary的初始化,其实就是boundary这个参数没有给值。解决的方式其实很简单,只需要将Context-type的设置的值后边加上分号,再加上boundary=ebf9f03029db4c2799ae16b5428b06bd1,完整的就是multipart/form-data;boundary=ebf9f03029db4c2799ae16b5428b06bd1,boundary里的值你可以随便改,

或者设置成:

然后,这样你就可以成功上传文件了,当然postman中也可以下载文件,只需要点击"Send“右下角的小三角形,选择一下就可以了:

       当然,有的人说啥post们中不需要指定Content-Type的值,说啥上传文件的时候会自动识别,反正我试过了,并不可行。这里如果不设置Content-Type的话,后台会报Current request is not a multipart request的异常。

回答: 当出现"Required request part 'file' is not present"错误时,通常是由于在文件上传接口没有正确传递文件参数导致的。\[1\]这个错误信息表明请求缺少名为'file'的必需文件参数。\[2\]在使用Postman测试时,确保在请求正确设置了文件参数,并将其命名为'file'。\[2\]另外,还要确保请求的Content-Type设置为"multipart/form-data",以支持文件上传。如果仍然遇到问题,可以检查后台日志,查看是否有类似于"MissingServletRequestPartException"的警告信息,以获取更多的错误详情。\[3\] #### 引用[.reference_title] - *1* [springboot文件上传报错:Required request part ‘file‘ is not present](https://blog.csdn.net/Tianguoping/article/details/120507284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Springboot文件上传接口,一直报Required request part ‘zipFile‘ is not present的错误](https://blog.csdn.net/ylx1066863710/article/details/120652555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [antd3 vue3 springboot 上传文件 解决Required request part ‘file‘ is not present](https://blog.csdn.net/fly19920602/article/details/126328535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值