我正在尝试向Asana任务添加附件。
我的JSON请求体如下:
request_body = {
"data" => {
"file" => "@#{attachment.tempfile}"
}
}
我在POST上收到这个输出:
error: file: File is not an object
"attachment"变量是一个规则的rails形式的附件。
有什么想法吗?
-----编辑-----
对于任何展望未来的人来说,我都是用法拉第宝石计算出来的。这是我使用的代码:
connection = Faraday.new(:url => @uri) do |conn|
conn.response :logger
conn.request :multipart
conn.request :url_encoded
conn.basic_auth(@api_key, '')
conn.adapter :net_http
end
payload = { :file => Faraday::UploadIO.new(file, file_type) }
response = connection.post(@uri, payload)
return response
啊,这实际上是你不能使用JSON的一种情况——你需要进行表单编码上传,否则你只是试图将"file"参数设置为字符串"@tmpfile.txt"(或者其他什么)。
我不太熟悉rails,但这里真正的问题是"如何发布从rails上传的文件"——这里的Asana端点与所有其他表单上传完全一样。