我正在尝试通过API将文件上传到平台
来自终端的CUrl请求正常
curl -v --trace-ascii trace.txt -H "Authorization: Bearer XXXX-XXXX-XXXX-XXXX" -F "file=@test1234.txt;type=text/txt" https://xxx.YYYY/upload
但在R中,当我使用Post时,我得到状态500错误
outfilename="/Volumes/Work/texttest.txt"
POST(url="https://xxx.YYYY/upload",body = upload_file(
path = outfilename,
type = 'text/txt'),
verbose(),add_headers(Authorization=paste0("Bearer ",btoken$access_token)))
或
postForm(uri="https://xxx.YYYY/upload",file = fileUpload(
filename = outfilename, contentType = 'text/txt'),
add_headers(Authorization=paste0("Bearer ",btoken$access_token)))
有人可以帮忙吗?
编辑:让它与postForm一起工作,如果有人帮助解决为什么它不能与POST一起工作将会很棒
httpheader <- c(Authorization=paste0("Bearer ",btoken$access_token))
status<-postForm(uri=paste0(server,"upload"),file = fileUpload(filename = outfilename),.opts=list(httpheader=httpheader))
答案 0 :(得分:0)
对于POST
,最相似的翻译是
POST(url="https://xxx.YYYY/upload",
body = list(file=upload_file(
path = outfilename,
type = 'text/txt')
),
verbose(),
add_headers(Authorization=paste0("Bearer XXXX-XXXX-XXXX-XXXX"))
)
注意body=
是一个列表。这将数据作为表单数据提交,这是curl -F
选项的作用。
请注意,我发现使用http://requestb.in/这样的网站可以更轻松地解决这些问题。通过发布到该站点,您可以准确地看到发送到服务器的内容,并查看两种方法之间的请求有何不同。