IDEA HttpClient文件上传请求
###
POST http://localhost:8080/uploadFile
Content-Type: multipart/form-data; boundary=WebAppBoundary
Authorization: xxxxx
--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="test.xlsx"
Content-Type: multipart/form-data
#文件地址(与.http文件同目录同级或者后续二进制流)
< test.xlsx
--WebAppBoundary--
以上有换行的地方是必须的,最后的--WebAppBoundary--
这一行标志着请求体的结束。
解释
请求 URL:
修改了请求 URL 为 /importExcel,以匹配您的控制器方法。
Content-Type:
保持了 Content-Type 为 multipart/form-data,并指定了边界字符串 WebAppBoundary。
Content-Type
为 text/plain,这是对于纯文本字段的标准类型。
Content-Disposition
标头指定了字段名称 file 和文件名 test.xlsx。
< test.xlsx
表示实际的文件内容。在实际请求中,这里应该是 .xlsx 文件的内容。
但我们在controller的接口处自动生成http时会出现这种情况
POST http://localhost:8080/uploadFile?
file={{$random.alphanumeric(8)}}
Content-Type: application/x-www-form-urlencoded
和文章开头那种写法的主要区别
- Content-Type:
- 第二种请求使用了 application/x-www-form-urlencoded,适用于发送标准的键值对表单数据。
- 第一种请求使用了 multipart/form-data,适用于发送文件和其他非文本数据。
- 请求体结构:
- 第二种请求的请求体是一个简单的键值对,适合发送普通的表单数据。
- 第一种请求的请求体是一个多部分的结构,允许发送包括文件在内的多种类型的数据。
- 文件上传:
- 第二种请求没有提供文件上传的能力,因为文件数据不适合放在 URL 查询参数或 application/x-www-form-urlencoded 请求体中。
- 第一种请求明确支持文件上传,通过 multipart/form-data 格式发送文件数据。
结论
如果需要上传文件,应使用第一种请求格式,即 multipart/form-data。这种方式是上传文件的标准做法,并且被广泛支持。第二种请求格式不适合上传文件,仅适用于发送简单的键值对表单数据。
可以参考
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST
https://www.cnblogs.com/fugitive/p/13606288.html