将curl文件上传转换为{httr}代码时,如何指定自定义文件名?
解决httr上传文件时自定义文件名的问题
你遇到的问题核心是:curl命令里的filename=new.txt并不是独立的表单参数,而是和file=@old.txt绑定在一起的属性,用来指定文件上传时的显示名称。直接把filename作为单独的表单字段提交,服务器自然不会识别。
正确的做法是在httr::upload_file()函数内部指定自定义文件名,同时别忘了加上curl里的Accept: application/json请求头。修改后的代码如下:
httr::POST( url = "https://somewhere.com/api/", httr::accept("application/json"), body = list( "token" = "TOKEN_TOKEN", "content" = "file", "action" = "import", "record" = "1", "field" = "file_upload", "file" = httr::upload_file("old.txt", filename = "new.txt") ), encode = "multipart" )
这样修改后,filename=new.txt会作为file字段的一部分以multipart格式提交,和原curl命令的逻辑完全一致,服务器就能正确读取到自定义的文件名了。
内容的提问来源于stack exchange,提问作者the-mad-statter
相关产品推荐
相关产品推荐

