3

我使用HTTPie来发布一个 multipart/form-data 请求(通过-f选项)。它包括一个文件字段(使用@选项)。multipart 请求的对应部分有一个 pseudo-header Content-Disposition,但没有 pseudo-header Content-Type

Content-Type如何为特定文件添加这样的?

为了完整起见,这是我现在发送的内容(如 所示-p B):

--xyz
Content-Disposition: form-data; name="file"; filename="file.txt"

Hello, world!
This is the content of the file.

--xyz

但这是我需要发送的:

--xyz
Content-Disposition: form-data; name="file"; filename="file.txt"
Content-Type: text/plain

Hello, world!
This is the content of the file.

--xyz

或者换一种说法,比如 CURL 等效选项:-F "file=file.txt;type=text/plain".

4

3 回答 3

3

这对我有用:

http -f POST :8080/submit-file metadata=@metadata.json files@file1.jpeg files@file1.jpeg

该文档帮助了我:https ://httpie.org/doc#file-upload-forms

=@使得 httpie 以 content type 发送它text/plain

于 2017-09-20T14:34:17.693 回答
3

这对于 httpie 是不可能的。它有一个问题,有一些拉取请求来修复它,但尚未合并。

于 2016-02-12T03:25:16.873 回答
0

我刚刚注意到现在的文档multipart/form-data如下(最后):

上传文件时,它们的内容类型是从文件名中推断出来的。您可以手动覆盖推断的内容类型:

$ http -f POST httpbin.org/post name='John Smith' cv@'~/files/data.bin;type=application/pdf'

我不知道那是什么时候发生的,但现在看来:

  1. “部分Content-Type”是自动推断的
  2. 可以从命令行选项覆盖它

所以我一直在寻找!:-)

参考:https ://httpie.org/docs#file-upload-forms 。

于 2020-07-28T09:17:38.930 回答