【发布时间】:2014-05-14 20:24:48
【问题描述】:
我正在尝试使用carrierwave 和carrierwave-azure gem 将我的应用中上传的文件保存到天蓝色存储blob。 carrierwave-azure gem 的文档在 github 上似乎有点精简,但我相信正确地遵循了所有设置方向 (https://github.com/unosk/carrierwave-azure)。但是它仍然不起作用。
当我尝试上传文件时,出现以下错误:
DownstreamsController#create 中的 Azure::Core::Http::HTTPError OutOfRangeInput (400):请求输入之一超出范围。
我的carrierwave.rb 看起来像这样:
CarrierWave.configure do |config|
config.azure_credentials = {
storage_account_name: 'myaccountname',
storage_access_key: 'reallylongstringwithcapandlowercaselettersand+signs=='
}
config.azure_container = 'http://myapp.blob.core.windows.net/shipmentdocs'
end
我的上传者:
include CarrierWave::RMagick
storage :azure
def store_dir
"http://myapp.blob.core.windows.net/shipmentdocs/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :convert => 'jpg'
process :resize_to_limit => [100, 100]
end
def extension_white_list
%w(jpg jpeg gif png pdf doc)
end
我已经在我的 gem 文件中包含了这两个 gem。如果我将存储从 :azure 切换到 :file 上传工作,但是它存储在应用程序目录中,我想将文件作为 blob 存储在 Azure 中。
不确定这是否重要,但我正在尝试通过本地主机从本地开发环境中执行此操作。任何帮助将不胜感激。
更新: 以下是提交的请求参数:
> {"utf8"=>"✓", > "authenticity_token"=>"X/Q1ADOLgdaLJVsdrerdHdK9S/kJtSfjkjiutEuYsTYRY=", > "downstream"=>{"bols_attributes"=>{"0"=>{"file_name"=>#<ActionDispatch::Http::UploadedFile:0x00000107c58340 > @original_filename="test-azure-storage-bol-file.png", > @content_type="image/png", @headers="Content-Disposition: form-data; > name=\"downstream[bols_attributes][0][file_name]\"; > filename=\"test-azure-storage-bol-file.png\"\r\nContent-Type: > image/png\r\n", > @tempfile=#<Tempfile:/var/folders/dc/y286vygx1jq5wjw3f6b6bcww0000gn/T/RackMultipart20140514-8268-ngdw0m>>}}, > "sales_order"=>"RTEWW423", "to_company_id"=>"2", > "ship_date"=>"2014-05-14", "ship_total_pallets"=>"1", > "downstreamDetails_attributes"=>{"0"=>{"tb_product_type_id"=>"17", > "ship_total_net_weight"=>"3000", "ship_total_gross_weight"=>"3000", > "_destroy"=>"false"}}}, "commit"=>"Submit"}
【问题讨论】:
标签: ruby-on-rails azure file-upload carrierwave