使用命名文件的HTTP POST多部分请求

3
我需要发送一个包含文件名的(multipart) HTTP请求,这似乎比我想象中的要难...我尝试使用HTTPoison找出一种方法来做到这一点,但我无法使用除"file"以外的名称。我尝试直接使用Hackney,但似乎没有选项可用, 并且在这些选项上绝对没有测试显示此功能。我还查看了ibrowse和HTTPotion,但找不到任何有用的东西(请注意,我的Erlang非常有限)。这是我想要使用Ruby库Curb的示例(请注意,Curl::PostField.file需要一个名称和文件路径)。
这是一个奇怪的事情吗?或者我漏掉了什么明显的东西...欢迎任何建议。
谢谢!
2个回答

14

如果未来有人遇到类似的问题,这里提供解决方案:

HTTPoison.start
request = HTTPoison.post!(url, {:multipart, [{:file, "path/to/file", { ["form-data"], [name: "\"photo\"", filename: "\"/path/to/file\""]},[]}]}, headers, options)

请注意额外转义的引号。


请注意双引号转义符号对于名称和文件名的使用,它们是必须的,否则HTTPoison将无法正确地伪造请求。 - Cristian Montini

1

我设法让它工作了

HTTPoison.post!(url, {:multipart, [{"name", "value"}, {:file, path_to_file}]})

借助于这个Github issue的一些帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接