Ruby on rails Rails-纸夹-支持多文件上传
我在Rails 3应用程序上安装了回形针,可以上传一个文件-哇,这很有趣,也很简单 现在的挑战是,允许用户上传多个对象。 是否单击“选择文件”并能够选择多个文件。或者单击“更多”按钮并获取另一个文件上载按钮 我找不到任何教程或宝石来支持这一开箱即用。我知道 任何建议或解决方案。似乎是一种普遍的需要 谢谢我将在第8章介绍这一点。不过,我不涉及上传到S3或调整图像大小 建议你买它完全基于它解决这一个问题可能听起来有点偏颇,但我可以向你保证,它会回答你的其他问题。它将行为驱动的开发方法作为主要主题之一,在应用程序开发期间向您介绍Rails特性。这不仅向您展示了如何构建应用程序,还展示了如何使其可维护 至于图片上传后的大小调整,回形针已经有了。我建议你先读一读,然后再问另一个问题,如果你不了解任何选项/方法 至于S3上传,您可以这样做:Ruby on rails Rails-纸夹-支持多文件上传,ruby-on-rails,ruby-on-rails-3,paperclip,Ruby On Rails,Ruby On Rails 3,Paperclip,我在Rails 3应用程序上安装了回形针,可以上传一个文件-哇,这很有趣,也很简单 现在的挑战是,允许用户上传多个对象。 是否单击“选择文件”并能够选择多个文件。或者单击“更多”按钮并获取另一个文件上载按钮 我找不到任何教程或宝石来支持这一开箱即用。我知道 任何建议或解决方案。似乎是一种普遍的需要 谢谢我将在第8章介绍这一点。不过,我不涉及上传到S3或调整图像大小 建议你买它完全基于它解决这一个问题可能听起来有点偏颇,但我可以向你保证,它会回答你的其他问题。它将行为驱动的开发方法作为主要主题之一
has_attached_file :photo, :styles => { ... }, :storage => :s3
您需要使用S3的详细信息来配置回形针::存储::S3,然后回形针也有了相应的设置
祝你好运 好吧,这是一个复杂的问题,但它是可行的。这是我如何让它工作的 在我使用的客户端上,有一个javascript库,它允许通过进度条和拖放支持上传多个文件。它支持良好,高度可配置,基本实现简单: 他认为:
<div id='file-uploader'><noscript><p>Please Enable JavaScript to use the file uploader</p></noscript></div>
当传递文件时,FileUploader会将其作为XHR请求发布到服务器,其中POST正文是原始文件数据,而头和文件名则通过URL字符串传递(这是通过javascript异步上传文件的唯一方法)
这就是它变得复杂的地方,因为曲别针不知道如何处理这些原始请求,所以你必须捕获它们并将其转换回标准文件(最好在它们进入Rails应用程序之前),这样曲别针就可以发挥其神奇的作用。这是通过一些机架中间件完成的,它创建了一个新的临时文件(请记住:Heroku是只读的):
稍后,在application.rb中:
config.middleware.use 'Rack::RawFileStubber'
然后在控制器中:
def upload
@foo = modelWithPaperclip.create({ :img => params[:file] })
end
这工作可靠,但在同时上载大量文件时,这可能是一个缓慢的过程
免责声明
这是为一个只有一个已知且受信任的后端用户的项目实现的。对于高流量的Heroku应用程序,它几乎肯定会对性能产生严重影响,我还没有对它进行安全性测试。也就是说,它确实有效。Ryan Bigg推荐的方法如下:
文件上传器
非常棒。这是一个非常棒的用户体验,就像Gmail拖放上传一样。如果您对最新的中间件组件感兴趣,有人写了一篇关于如何使用rack raw upload
中间件将其与rails应用程序连接起来的博客文章
upload'lib/raw\u file\u stuber.rb:13:in
call'@Daniel中出现“无法将nil转换为字符串”错误。这样做的问题还在于,它现在只适用于一种模型。是否有一种通用的方法来支持这一点,从而使它适用于几种不同类型的模型上载?
config.middleware.use 'Rack::RawFileStubber'
def upload
@foo = modelWithPaperclip.create({ :img => params[:file] })
end