我正在尝试使用他们的 v2 api 将文件上传到 box.com。我能够使用 curl 成功上传文件,但无法从我的 rails 应用程序上传文件。我正在向我的上传函数传递正确的文件夹 ID,而文件是由我的应用程序中的表单上传创建的临时文件对象。
这是成功的 curl 命令
curl https://upload.box.com/api/2.0/files/data -H "Authorization: BoxAuth api_key=API_KEY&auth_token=TOKEN" -F contract=@test.png -F folder_id=387656851 -ssl3
这是我的红宝石代码
class BoxApi
require 'httmultiparty'
include HTTMultiParty
ssl_version :SSLv3
def initialize
@key = API_KEY
@token = TOKEN
end
def upload_file(folder_id,file,filename,content_type)
File.open(file) do |open_file|
response = self.class.post('https://upload.box.com/2.0/files/data', :query => {
:file => open_file,
:folder_id => folder_id
}, :headers => {'Authorization' => "BoxAuth api_key=#{@key}&auth_token=#{@token}"})
p response
end
结尾
我从框中返回带有此文本的 html 页面 看来您的防火墙可能阻止了 Box,或者您遇到了错误。
请联系您的 IT 管理员配置您的防火墙以识别 .box.com、.box.com 和 .boxcdn.net 的所有子域。应该为这些域打开的端口是 80 和 443。
如果这不能解决问题,请在 https://www.box.com/help 提交支持票。
任何想法为什么 curl 命令可以工作而不是 ruby 代码?