v2apiを使用して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
これが私のルビーコードです
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コードは機能しない理由はありますか?