2012-01-15 4 views
0

サーバー上でファイルをアップロードするには時間がかかります。ファイルをアップロードし、検証後にバックグラウンドプロセスがアップロードを引き継ぐことができるため、私はこれについて行くことができます。バックグラウンドジョブを使用してファイルをアップロードする

私のファイルコントローラは、ファイルがが大きいので、ファイルのモデルは、この

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 
私が遅れた仕事の宝石を使用し

とどのよう

+0

アプリをスレッドとしてデプロイすることはできますか、それとも共有のみですか? – clyfe

+0

@clyfeすぐに質問を更新しました – Uchenna

+0

delayed_jobを使用してファイル処理をバックグラウンドで処理することはできますが、アップロードをバックグラウンドにすることはできません。 – clyfe

答えて

0

のようなものです。この

@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 

のようなものですサイズは間違いなくアップロードに多くの時間がかかります。そして、クライアント側でのバックグラウンド処理は、時間をかけずにファイルをアップロードしたり、遅いレスポンスを返すことができる解決策が必要なために発生することはありません。この問題に対する答えは、ここでjqueryを使用してファイルをアップロードし、jqueryを使用してクライアント側で検証を行うことができます(これは良いことではありませんが、目的を満たすことになります)。

私はこのプロジェクトで - http://blueimp.github.com/jQuery-File-Upload/を使っています。しかし、あなたの欲求に合わせてもっと利用可能です。あなたがここにいるかどうか確認してください - http://creativefan.com/10-ajax-jquery-file-uploaders/

私はこの問題を解決するのに役立つことを願っています。

関連する問題