0

Carrierwave と Fog を使用してファイルを Amazon S3 にアップロードする Rails 4 アプリがあります。アプリが使用するサーバーは Nginx と Thin です。

私が抱えている問題は、5 MB を超えるファイルをアップロードするときです。

CarrierwaveDirect を試してみましたが、まだ動作させることができません。

これが私のCarrierwave構成です:

config.fog_directory  = 'aws-bucket-name'
config.fog_public     = false
config.fog_attributes = { multipart_chunk_size: 5242880 }
config.max_file_size = 200.megabytes # CarrierwaveDirect option

コントローラーのアクションは次のとおりです。

def new
  @file = DownloadFile.new
end

def create
  @file = DownloadFile.new
  @file.file = params[:download_file][:file]

  if @file.save
    redirect_to downloads_path
  else
    render :new
  end
end

そしてフォーム:

<%= form_for @file, multipart: true do |f| %> <!-- even tried with `multipart` wrapped in `html: {}` -->
  <%= f.label :file %>
  <%= f.file_field :file %>
  <%= f.button t(:upload) %>
<% end %>

小さなファイルは問題なくアップロードできますが、5 MB を超えるファイルになると、フォームが再表示されます。エラーなし、ログにエラーなし、何もありません。

4

1 に答える 1

0

Carrierwave Direct では、フォームを少し異なる方法で設定する必要があるようです (独自のサーバーではなく、S3 で URL を設定する必要があるため)。大きなファイルを扱っている場合は、大きなファイルがプロセスを長時間拘束するため、これが望ましい場合があります。direct_upload_form_forそれを機能させるには、次のように、プレーンの代わりにヘルパー メソッドを使用する必要があるように見えますform_for

<%= direct_upload_form_for @uploader do |f| %>
  <%= f.file_field :avatar %>
  <%= f.submit %>
<% end %>

詳細については、https ://github.com/dwilkie/carrierwave_direct#rails を参照してください。

于 2013-08-26T13:14:19.480 に答える