【问题标题】:Multiple File Upload using Carrierwave and JQuery File Upload使用 Carrierwave 和 JQuery 文件上传的多个文件上传
【发布时间】:2012-10-09 18:32:50
【问题描述】:
<%= semantic_form_for(@image, :url => { :action => "create_friend_upload" }, :html => {:multipart => true}) do |f| %>
    <%= f.inputs do %>
     <%= f.input :image, :input_html => {:multiple => true}, name: "gallery[image]" %>
     <%= f.hidden_field :friend_upload, :value => true %>    
     <%= f.hidden_field :user_id %>
     <%= f.hidden_field :friend_uploader, :value => current_user.name %>
    <% end %>
     <%= f.buttons do %>
     <%= f.commit_button :button_html => {:class => "primary"} %>
    <% end %>
    <% end %>

我的问题是它不断提交一个数组,Carrierwave 无法处理。它一直说name=\"gallery[image][]\" 而不仅仅是name=\"gallery[image]\"。 (见下文)。因此,我也不断收到错误消息can't convert nil into String。

 @headers="Content-Disposition: form-data; name=\"gallery[image][]\"; filename=\"VW 3.jpeg\"\r\nContent-Type: image/jpeg\r\n",

有人知道如何解决这个问题吗?谢谢!

更新:

我也确实在 JQuery 上看到了 Ryan 的 railscasts 视频,他对此的修复对我不起作用。

画廊.rb

class Gallery < ActiveRecord::Base
  attr_accessible :image, :name, :friend_upload, 
  mount_uploader :image, GalleryUploader
end

图库控制器

def friend_upload
 @image = Gallery.new
end

def create_friend_upload
 @image = Gallery.create(params[:gallery])
end

【问题讨论】:

  • 您能给我们展示一下 Gallery 模型声明吗?
  • @D3mon-1stVFW,我用画廊的模型和控制器更新了问题。谢谢。
  • 您可以尝试绕过carrierwave,直接将您的文件上传到s3,如下所述:pjambet.github.com/blog/direct-upload-to-s3,该示例适用于一个文件,但文件输入多个,效果很好。跨度>
  • 嗨@pjam,这样做,我会失去调整大小的功能吗?我需要这些功能,否则很难保持一致的大小和干净的 UI。
  • 确实,这会导致一些问题,因为您可能无法通过载波使用处理,但是我知道为此目的使用 RMagick 并不难,您只需需要编写更多代码:s

标签: jquery ruby-on-rails carrierwave formtastic


【解决方案1】:

因为您指定了:multiple =&gt; true,rails 会生成name="gallery[image][]"。由于https://github.com/rails/rails/pull/8108,您在升级到最新版本的rails (3.2.13) 时也可能遇到此问题。

简单的解决方法类似于

$('#fileupload').fileupload({
    paramName: 'gallery[image]'
});

这利用paramName 选项来指定文件表单数据

参考文献:

【讨论】:

  • 由于 3.2.13 中的更改,我遇到了这个问题,这让我发疯了……直到我找到你的答案,我才感到困惑。谢谢!!
  • 我首先虽然这是 Rails 4 的一个特定问题,但感谢您提供这个优雅的解决方案!
【解决方案2】:

问题出现是因为您没有将name 放在input_html 中,这就是使用simple form 和可能semantic form 的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 2014-05-04
    • 2018-06-23
    • 2013-06-30
    • 1970-01-01
    相关资源
    最近更新 更多