调用上传文件接口报错“the request was rejected because no multipart boundary was found”
设置的headers信息
content-type="multipart/form-data"(此处test环境和产线环境均已设置,应用市场app也同上,唯独应用市场的app上传失败)
发起请求后服务器端报错
找了各个帖子发现存在两种情况
情况1:重新修改headers参数 ,干掉content-type, 因为上传图片request请求会自动添加这个请求参数的格式和boundary标识,如果自定义可能会覆盖request请求标识,从而产生冲突
情况2:前面有一段错误是 “org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; ”
从上面的异常信息来看,是因为该目录[/tmp/tomcat.1428942566812653608.8090/work/Tomcat/localhost/ROOT],不存在导致的,也就是说上传图片post请求需要这个临时目录来存储post数据,因为该目录是挂在/temp目录下的临时文件,那么对于一些OS系统,像centOS将经常删除这个临时目录,所有导致该目录不存在了
情况2解决方法:1)重启项目
2)在application.yml文件中设置multipart location ,并重启项目
spring: http: multipart: location: /data/upload_tmp
3)添加启动参数 -java.tmp.dir=/path/to/application/temp/,并重启
采用重启项目已解决,因为涉及生产环境,后面版本在考虑使用第二种方式
以上两种情况均已尝试,最终解决办法为第一种,去掉content-type
解决办法:
尝试不在headers里面加content-type ,直接去掉了headers以后,调用接口正常
本文参考如下两个帖子得出结论:
https://blog.csdn.net/sun_977759/article/details/88868509
https://blog.csdn.net/weixin_30569001/article/details/98404711