使用后台作业上传文件

时间:2012-01-15 10:49:11

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

在我的服务器上传文件会花费很多时间,是否可以上传文件并允许后台进程在验证后接管上传,这样它就不会减慢应用程序的速度,我该如何解决这个问题。

我的文件控制器就像这样

@file = File.new(params[:file])
      respond_to do |format|
      if @file.save
        format.html { redirect_to @file, notice: 'file was successfully uploaded.' }
        format.json { render json: @file, status: :created, location: @file }
        format.js
      else
        format.html { render action: "new" }
        format.json { render json: @file.errors, status: :unprocessable_entity }
        format.js
      end
    end
end

文件模型是这样的

 has_attached_file :file,
    :path => ":rails_root/public/system/:attachment/:id/:style/:normalized_file_file_name",
    :url => "/system/:attachment/:id/:style/:normalized_file_file_name"
  validates_attachment_content_type :file, :content_type => ['audio/mp3', 'audio/mpeg', 'audio/mid', 'audio/x-wav']

  Paperclip.interpolates :normalized_file_file_name do |attachment, style|
    attachment.instance.normalized_file_file_name
  end

  def normalized_mp3_file_name
    "#{self.mp3_file_name.gsub( /[^a-zA-Z0-9_\.]/, ' ')}"
  end

我将在哪里使用延迟的工作宝石以及如何

1 个答案:

答案 0 :(得分:0)

由于您的文件很大,因此上传肯定会花费很多时间。并且客户端的后台处理不可能发生,因为您需要一些可以上传文件的解决方案,而不需要花费太多时间或进行延迟响应。这个问题的答案可以帮助你在这里使用jquery上传你的文件,你也可以在客户端使用jquery进行验证(这不是一件好事,但是,是的,它将实现目的)。

我使用了这个 - http://blueimp.github.com/jQuery-File-Upload/用于我的项目。但是有更多适合您的愿望。如果您愿意,请查看它们 - http://creativefan.com/10-ajax-jquery-file-uploaders/

我希望它可以帮助您解决这个问题。