【问题标题】:upload file to box api v2将文件上传到盒子 api v2
【发布时间】:2012-09-12 19:22:37
【问题描述】:

我正在尝试使用他们的 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 的所有子域。网。应该为这些域打开的端口是 80 和 443。

如果这不能解决问题,请在 https://www.box.com/help 提交支持票。

有什么想法为什么 curl 命令可以工作,但 ruby​​ 代码不能工作?

【问题讨论】:

    标签: ruby file-upload box-api httparty


    【解决方案1】:

    尽管迟到了,但这可能对遇到此问题的人有用。 在其 API 的 2.0 版本中,有一个 gem ruby-box 可与 Box 服务一起使用。

    【讨论】:

      【解决方案2】:

      这对我很有效

      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')}
      )
      

      我会尝试验证

      1. 您可以进行非上传 API 调用(即 GET /folders/0)
      2. 如果没有,请检查您的防火墙设置。

      【讨论】:

      • 我可以进行非上传api调用,例如创建文件夹。我在上面尝试了您的代码,但没有成功。我使用该基本 uri 获得了 401 未授权,并且在使用上面的uploads.box.com/2.0@ 的基本 uri 之前我收到了同样的错误
      【解决方案3】:

      肖恩已经在他的回答中提到了这一点,但我会明确地强调它。我们在使用https://upload.box.com URL 时遇到了一些问题,box 不再推荐该 URL。我建议您尝试https://api.box.com/2.0 URL,看看它是否会改变您的结果。

      在最坏的情况下,我会尝试使用像 wireshark 这样的数据包分析器来捕获我的数据包,并寻找两种情况之间的差异。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-06
        • 1970-01-01
        • 2016-03-13
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 2012-09-27
        相关资源
        最近更新 更多