我正在尝试使用他们的v2应用程序接口将文件上传到box.com。我可以使用curl成功上传文件,但不能从我的rails应用程序上传文件。我正在传递我的上传函数,正确的文件夹id和文件是由我的应用程序中的表单上传创建的tempfile对象。
下面是成功的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这是我的ruby代码
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页面,看起来你的防火墙可能阻止了你的框或者你遇到了一个错误。
请与您的IT管理员联系,将防火墙配置为识别.box.com、.box.com和.boxcdn.net的所有子域。应该为这些域打开的端口是80和443。
如果仍不能解决问题,请在https://www.box.com/help提交支持工单。
你知道为什么curl命令可以工作,而ruby代码不行吗?
发布于 2012-09-13 04:46:06
这对我来说工作正常
require 'httmultiparty'
class SomeClient
include HTTMultiParty
base_uri 'https://api.box.com/2.0'
end
response = SomeClient.post('/files/data',
:headers => { 'authorization' => 'BoxAuth api_key={YOUR API KEY}&auth_token={YOUR TOKEN' },
:body => { :folder_id => '0', :somefile => File.new('large.jpeg')}
)我会试着证实
发布于 2013-05-28 21:11:54
尽管迟到了,但对于遇到这个问题的人来说,这可能是有用的。在2.0版本的ruby-box中,有一个gem API可以与Box服务一起使用。
发布于 2012-09-13 06:40:13
Sean已经在他的回答中涵盖了这一点,但我将明确强调这一点。我们在使用不再推荐的https://upload.box.com网址时遇到了一些问题。我建议尝试https://api.box.com/2.0的网址,看看它是否会改变你的结果。
最坏的情况是,我会尝试使用wireshark之类的数据包分析器捕获数据包,并查找两种情况之间的差异。
https://stackoverflow.com/questions/12394894
复制相似问题