使用HTTPie的multipart / form-data中的一个文件的Content-Type

时间:2015-11-26 17:01:17

标签: httpie

我使用HTTPie来发布一个 multipart / form-data请求(传递-f选项)。它包括一个 文件字段(使用@选项)。相应的部分 multipart请求有一个伪标头Content-Disposition,但确实如此 没有伪标题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"

3 个答案:

答案 0 :(得分:2)

这对httpie来说是不可能的。有一个issue for it,有一些拉动请求要修复它,但还没有合并。

答案 1 :(得分:2)

这对我有用:

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

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

=@会让httpie以内容类型text/plain发送它。

答案 2 :(得分: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