我想在 R 中使用
httr2
发布上传文件(本例中为 png)的请求。
此示例使用被取代的包
upload_file()
的 httr
(在此 answer 中找到):
library(httr)
media <- tempfile()
png(media, with = 800, height = 600)
plot(cars)
dev.off()
metadata <- tempfile()
writeLines(jsonlite::toJSON(list(title = unbox("My file"))), metadata)
#post
req <- POST("https://httpbin.org/post",
body = list(
metadata = upload_file(metadata, type = "application/json; charset=UTF-8"),
media = upload_file(media, type = "image/png")
),
add_headers("Content-Type" = "multipart/related"),
verbose()
)
unlink(media)
unlink(metadata)
在
httr2
的doc中,我可以找到这个使用req_body_json
的示例:
req <- req_gist(token) %>%
req_body_json(list(
description = "This is my cool gist!",
files = list(test.R = list(content = "print('Hi!')")),
public = FALSE
))
req %>% req_dry_run()
但这会在正文中发送一些文本,我想上传一个文件。
httr:upload_file
中的httr2
相当于什么?
像往常一样,我应该看看doc。
就是这个函数
req_body_file(req, path, type = NULL)
:
req <- request("https://example.com/api") %>%
req_body_file(path = "path/to/file.png")
req %>% req_dry_run()