体式 Api Rails 附件
Asana Api Rails Attachment
我正在尝试向 Asana 任务添加附件。
我的JSON请求正文如下:
request_body = {
"data" => {
"file" => "@#{attachment.tempfile}"
}
}
我在 POST 上收到此输出:
error: file: File is not an object
"attachment" 变量是一个常规的 rails 表单附件。
有什么想法吗?
-----编辑-----
对于任何展望未来的人,我都是用法拉第 gem 想出来的。这是我使用的代码:
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 具体但这里真正的问题是 "how to post a file upload from Rails" - 这里的 Asana 端点与所有其他表单上传完全一样。
我正在尝试向 Asana 任务添加附件。
我的JSON请求正文如下:
request_body = {
"data" => {
"file" => "@#{attachment.tempfile}"
}
}
我在 POST 上收到此输出:
error: file: File is not an object
"attachment" 变量是一个常规的 rails 表单附件。
有什么想法吗?
-----编辑-----
对于任何展望未来的人,我都是用法拉第 gem 想出来的。这是我使用的代码:
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 具体但这里真正的问题是 "how to post a file upload from Rails" - 这里的 Asana 端点与所有其他表单上传完全一样。