体式 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 端点与所有其他表单上传完全一样。