Ruby on rails S3的Carrierwave/Fog失败,文件超过5mb

Ruby on rails S3的Carrierwave/Fog失败,文件超过5mb,ruby-on-rails,file-upload,amazon-s3,carrierwave,fog,Ruby On Rails,File Upload,Amazon S3,Carrierwave,Fog,我有一个Rails 4应用程序,它使用Carrierwave和Fog将文件上传到Amazon S3。应用程序使用的服务器是Nginx和Thin 我遇到的问题是上传超过5mb的文件 我试着到处寻找让它工作的方法,我试过CarrierwaveDirect,但仍然无法让它工作 这是我的Carrierwave配置: config.fog_directory = 'aws-bucket-name' config.fog_public = false config.fog_attributes =

我有一个Rails 4应用程序,它使用Carrierwave和Fog将文件上传到Amazon S3。应用程序使用的服务器是Nginx和Thin

我遇到的问题是上传超过5mb的文件

我试着到处寻找让它工作的方法,我试过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 %>


我可以上传小文件,但当文件超过5mb时,表单就会重新显示。没有错误,日志中没有错误,什么都没有。

使用Carrierwave Direct,您可能需要稍微不同地设置表单(因为它需要在S3上设置url,而不是在您自己的服务器上)。如果您处理的是大文件,这可能更可取,因为否则大文件会占用一个进程较长的时间。要实现这一点,您可能需要对助手使用
direct\u upload\u form\u方法,而不是对
使用普通的
form\u方法,类似于:

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


有关这方面的更多详细信息,请参阅:

显示控制器操作和查看表单。完成。我正在搜索可能导致此问题的原因,它可能是某个地方的超时事件,也可能是因为某些原因AWS S3不希望获取大于5mb的文件。我已将此操作缩小到大于5mb的文件和Carrierwave。当我仅使用Fog上传时,它可以工作,但当Carrierwave处于混合状态时,它完全失败。它好像不知道如何告诉Fog进行多部分上传。是的,我也尝试过,但正如我所说,当我尝试时,我仍然无法上传大于5mb的文件。