如何异步上传图像

时间:2011-07-08 11:47:31

标签: ajax ruby-on-rails-3 amazon-s3 heroku paperclip

我正在使用在heroku部署的Ruby on Rails 3。现在我使用paperclip和amazon s3进行存储,可以很好地处理多个图像附件。但是,当我提交表格时,我必须等待太长时间。出于这个原因,我将使用Ajax异步上传图像。任何例子或提示?谢谢!

更新:有一些我不明白的东西。当您填写具有多个图像附件的Post(例如)表单时,在您提交表单之前不会创建Post,然后它没有ID。图像belongs_to post通过post_id,然后:插件Jquery Uploader或Uploadify如何保存图像asyncronaly?

2 个答案:

答案 0 :(得分:3)

所有浏览器尚不支持通过XMLHttpRequest上传异步文件(带进度指示),但我遇到的最好的jQuery插件是jQuery-File-Upload(演示here)。它可以与Chrome,Safari,Firefox,Opera和MSIE配合使用,但不幸的是,MSIE尚未支持进度指示。上传器默认适用于所有文件类型,但您可以将其限制为图像。

希望将来所有浏览器都能通过AJAX实现这一目标,但目前您必须使用Flash才能完全支持跨浏览器。

答案 1 :(得分:0)

我制作了paperclip_upload宝石。有了这个宝石你可以:

  1. 例如,将您的文件上传到端点POST /api/uploads。这将返回如下标识符:{ "identifier": "9j3gp54p" }
  2. 您可以随意重复步骤1(使用ajax,如您在2011年所述:P)
  3. 您可以将较轻的POST中的所有 upload_identifiers 发送到/api/attachments。宝石将完成其余的工作......
  4. 检查README