0

アップロードされた複数のファイルがあり、ファイルはフォルダ内にグループ化されています。私はフォルダ内のすべてのファイルをダウンロードする一括ダウンロードボタンを持っています。ダウンロードするボタンをクリックすると、このメソッドが実行されます。Rails Carrierwaveをダウンロード可能なZipファイルにアップロードする

def download_multiple 
    @odocument = Odocument.find(params[:id]) 
    @files = Redocument.find(:all, :conditions => {:odocument_id => @odocument.id}) 
    t = Tempfile.new('tmp-zip-' + request.remote_ip) 
    Zip::ZipOutputStream.open(t.path) do |zos| 
     @files.each do |file| 
     zos.put_next_entry(File.basename(file.redocument.url)) 
     zos.print IO.read(file.redocument.url) 
     end 
    end 
    filename = @odocument.document_name + ".zip" 
    t.close  

    send_file t.path, :type => "application/zip", :filename => filename  
    end 

これはZIPファイルをダウンロードして作成し、WinRARまたは7Zipを使用するとファイルを抽出して正常に開く/編集できます。ただし、Windows XP/Vista/7の内蔵ZIPエクストラクタを使用すると、のエラー0x80004005が生成されます。

WinRARまたは7Zipを使用してファイルをダウンロードして開くことはできますが、これは効果的な解決策ではありません。どのように私はWindowsがWindowsに付属のもの以外の圧縮ソフトウェアなしでZIPファイルを開くことができるようにdownload_multipleメソッドを変更することができますか?

答えて

0

最近の宝石のアップデートでこの問題が修正されました。

関連する問題