gpt4 book ai didi

ruby-on-rails - Rails 3 Carrierwave-azure Azure::Core::Http::HTTPError OutOfRangeInput (400):请求输入之一超出范围

转载 作者:行者123 更新时间:2023-12-03 04:36:19 25 4
gpt4 key购买 nike

我正在尝试使用 Carrierwave 和 Carrierwave-azure gems 将我的应用程序中上传的文件保存到 azure 存储 blob。 Carrierwave-azure gem 的文档在 github 上似乎有点精简,但我相信已经正确遵循了所有设置方向( https://github.com/unosk/carrierwave-azure )。然而它仍然不起作用。

当我尝试上传文件时,出现以下错误:

Azure::Core::Http::HTTPError in DownstreamsController#create OutOfRangeInput (400): One of the request inputs is out of range.

我的 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"}

最佳答案

答案是,在我的 Carrierwave.rb 文件中,我使用了 config.azure_container 设置的完整 URL(即“http://myapp.blob.core.windows.net/shipmentdocs”)。事实证明,您应该提供容器名称,如下所示:

config.azure_container = 'shipmentdocs'

还需要注意的是,进行此更改需要重新启动服务器才能生效,因为 Carrierwave.rb 文件应位于您的 config/initializers 文件夹中。

关于ruby-on-rails - Rails 3 Carrierwave-azure Azure::Core::Http::HTTPError OutOfRangeInput (400):请求输入之一超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23664446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com