当前位置: 首页 > news >正文

北京市建设局网站全网自媒体平台

北京市建设局网站,全网自媒体平台,成都快速建站模板,二手域名交易平台一、情景回顾1、简单的文件上传的接口/*** 文件上传MultipartFile格式** param multipartFile 源文件* param filename 自定义文件名称,允许为空,为空时直接从源文件中拿* return*/RequestMapping("/uploadFileForMultipartFile")LogModuleAnn…

一、情景回顾

1、简单的文件上传的接口

  /*** 文件上传MultipartFile格式** @param multipartFile 源文件* @param filename 自定义文件名称,允许为空,为空时直接从源文件中拿* @return*/@RequestMapping("/uploadFileForMultipartFile")@LogModuleAnnotation(operate = OperatorType.Upload, operateObject = "oss/文件上传/MultipartFile格式")public Result uploadFileForMultipartFile(@RequestParam(value = "file") MultipartFile multipartFile, String filename) throws Exception {if (StringUtils.isBlank(filename)) {filename = UUidUtil.get32Uuid() + "-" + multipartFile.getOriginalFilename();}return Result.success(ossService.uploadFileForMultipartFile(multipartFile, filename));}

2、最初Provider类中的写法(错误版

因为原来的文件上传接口在跟前端对接时用了form data的格式,对接没问题,于是就在provider中也用这种格式去写了:

@PostMapping(value = "/oss/uploadFileForMultipartFile")
Result<String> uploadFileForMultipartFile(@RequestParam(value = "file") MultipartFile multipartFile,String filename) throws Exception;

但是方法没有调用成功,且服务提供端打印的日志显示:

upload file size limit:Current request is not a multipart request

二、问题解决过程

  1. 百度feign调用文件上传失败的解决方案

参考阅读:

解决feign微服务间的文件上传报错问题1

因为服务调用者MultipartFile的value跟服务提供者@RequestPart中的value值不一样导致的。
在服务调用者MultipartFile的value要跟服务提供者的@RequestPart中的value值一样。

解决feign微服务间的文件上传报错问题2

feign上传文件--产生的错误

文件属性需要使用 @RequestPart 属性,而且在请求中添加 consumes = MediaType.MULTIPART_FORM_DATA_VALUE ,
文件表单上传请求通常使用的ContentType为 multipart/form-data ,通过以上直接调用feign的方式即可实现feign 文件上传

补充说明:
produces:它的作用是指定返回值类型,不但可以设置返回值类型还可以设定返回值的字符编码;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

得知:需要在MultipartFile对象前使用@RequestPart注解,且在请求方式的添加 consumes = MediaType.MULTIPART_FORM_DATA_VALUE等属性

2、进行调试(错误版

@PostMapping(value = "/oss/uploadFileForMultipartFile",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<String> uploadFileForMultipartFile(@RequestPart(value = "file") MultipartFile file, String filename) throws Exception;

很尴尬,直接启动报错了,先前feign调用该post方法时,虽然功能失败,但不至于启动报错

百度翻译了一下异常信息的意思是:正文参数不能与表单参数一起使用

可能是@RequestPart注解的原因导致了这个问题

java.lang.IllegalStateException: Body parameters cannot be used with form parameters.

三、最终修改方案(正确版

于是在方法另外一个参数上加上@RequestParam注解再次进行调试,终于成功了

 @PostMapping(value = "/oss/uploadFileForMultipartFile",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)Result<String> uploadFileForMultipartFile(@RequestPart(value = "file") MultipartFile file, @RequestParam(value = "filename",required = false)String filename) throws Exception;

1、MediaType.APPLICATION_JSON_UTF8_VALUE不一定需要指定,其他需要注意的部分已经用 黄色加粗 标注

@PostMapping(value = "/oss/uploadFileForMultipartFile",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)

Result<String> uploadFileForMultipartFile(@RequestPart(value = "file") MultipartFile file, @RequestParam(value = "filename",required = false)String filename) throws Exception;

2、APPLICATION_JSON_UTF8_VALUE过时截图,可以根据项目中使用的版本决定

http://www.dinnco.com/news/31227.html

相关文章:

  • 7000元买一个域名做网站免费二级域名注册网站有哪些
  • wordpress前端是什么长春seo优化
  • wordpress 说说插件厦门seo网站推广
  • 知名企业网站搭建网站流量统计系统
  • 做的网站没流量自动点击器永久免费版
  • 上海襄阳网站建设济宁百度推广开户
  • 做网站优化的刷百度指数
  • 网站建设钟振森能让手机流畅到爆的软件
  • 计算机软件培训机构哪个好南昌seo代理商
  • 网站制作建设青岛网站建设公司电话
  • 怎么做网贷网站小程序制作费用一览表
  • 湛江模板建站多少钱怎么样建立自己的网站
  • 京东网站建设的要求上海优质网站seo有哪些
  • 杭州公司做网站手机百度ai入口
  • 怎么用ps做网站上的产品图seo流量的提升的软件
  • 网站开发多久能学会企业如何网络推广
  • 日本做设计的网站有哪些方面业务推广方式有哪些
  • 委托网站建设应注意百度拍照搜索
  • 建网站需要哪些知识seo优
  • 磁县邯郸网站建设太原网站制作优化seo
  • 贵阳好的网站建设广州推广系统
  • 做电影网站 资源去哪里找买链接官网
  • 网站设计规划建设的目的百度seo效果怎么样
  • 原始传奇网页版2019网站seo
  • 企业公司如何做网站营销模式和营销策略
  • 安徽省驻房城乡建设官方网站免费网站统计
  • 企业网站建设的研究开发方法及技术路线南昌seo顾问
  • 钦州浦北网站建设优化关键词技巧
  • 申请建设网站的请示谷歌seo是做什么的
  • 江西赣州市优化网站结构一般包括