二十八、Http上传文件的Content-Type格式

二十八、Http上传文件的Content-Type格式,第1张

昨天研发反馈使用EDI的HTTP调用结点时,http响应报错如下: Failed to parse multipart servlet requestnested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found 。

EDI在构建http请求头时设置了 Content-Type 为“multipart/form-datacharset=UTF-8”,缺失了 boundary ,导致了如上错误。

正确的Content-Type格式应该为:“multipart/form-databoundary=<calculated when request is sent>”

设置Camel Body的时候需要一起设置header,最终发送请求的header格式类似:

上面的Content-Type是postman内置的,下面的是手动加上的。

实验:

1)两者都勾选,上传成功

2)只勾选手动添加的Content-Type,上传失败,错误同上

3)只勾选内置的Content-Type,上传成功

这是我第9篇。

你们在使用Postman时,搞清楚下面这几个是干啥的吗

接下来介绍4个常用的类型

上图的 form-data 就是指的 multipart/form-data

这是一个多部分多媒体类型,它是一个常见的 POST 数据提交的方式,它会生成了一个 boundary 用于分割不同的字段。它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。 既可以上传键值对,也可以上传文件。 当上传的字段是文件时,会有Content-Type来说明文件类型。

注意,当使用表单上传文件时,必须让 form 的 enctype 等于这个值。

上图的 x-www-form-urlencoded 就是指的 application/x-www-form-urlencoded

一般用于 表单提交 ,会将请求参数用 key1=val1&key2=val2 的方式进行组织和编码,key 和 val 都进行了 URL 转码,并放到请求实体里面(注意如果是中文或特殊字符如"/"、","、“:" 等会自动进行URL转码)。

最常用的。使用这个类型,提交的是序列化后的 JSON 字符串,服务端/客户端会按json格式解析数据

即传递XML格式,在以前比较常用,不接触老的项目应该用不到。

上图 binary 指的是 application/octet-stream 。

Content-Type为 application/octet-stream 时,只可上传二进制数据,通常用来上传文件,没有键值,一次只能上传一个文件。

使用 postman 测试文件上传接口,文件上传请求头部参数是 content-type: multipart/form-data 类型

新建一个request请求,选post请求方式,输入接口地址

请求headers参数可以不用填,请求body选 form-data 类型, 输入参数名称,文件选 file 类型

点Select files 选择一个本地文件

输入其它请求参数

点 send 按钮执行

运行结果

浏览器访问 /media/21.png 拼接前面ip和端口就可以访问服务器刚才上传的图片了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11686013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存