3

我正在努力使用 Julia HTTP 包实现带有图像附件的 POST 请求。在 Python 中,我可以做(来自Pushover的来源):

import requests
r = requests.post("https://api.pushover.net/1/messages.json", data = {
  "token": "APP_TOKEN",
  "user": "USER_KEY"
},
files = {
  "attachment": ("image.jpg", open("myimage.jpg", "rb"), "image/jpeg")
})

如何使用 Julia/HTTP 或其他 Julia 包以简单的方式执行这样的文件附件?

非常感谢!

4

1 回答 1

2

这应该是使用的等效请求HTTP.jl

import HTTP
url = "http://localhost:8080" # check request with e.g. netcat -lp 8080
open("cat.jpg") do io
    headers = []
    data = [
        "token" => "APP_TOKEN",
        "user" => "USER_KEY",
        "attachment" => io,
    ]
    body = HTTP.Form(data)
    HTTP.post(url, headers, body)
end

文件名 ( cat.jpg) 和内容类型 ( image/jpeg) 是从io.


如果您需要更好的控制,例如如果您希望请求中的文件名与磁盘上的文件名不同,或者如果您想手动指定Content-Type,您可以手动构造一个HTTP.Multipart条目,如下所示:

data = [
    "token" => "APP_TOKEN",
    "user" => "USER_KEY",
    "attachment" => HTTP.Multipart("other_filename.jpg", io, "image/png"),
]

您可以使用类似的东西来比较/验证来自的请求和来自的HTTP.jl请求requests

$ netcat -lp 8080

并将请求发送到http://localhost:8080.

于 2021-02-19T11:29:51.983 回答