4月 24
このエントリをはてなブックマークに登録 Yahoo!ブックマークに登録

長いタイトルですな。

つまり、サーバ上でファイルを作って圧縮、ダウンロードは結構簡単にできるんです。ただ、ファイル生成しちゃうとファイル名をユニークにしなきゃいけなかったり、ファイルのダウンロードが終わったら削除しなきゃいけなかったり、気分的に手間なんですよね。タイミングによってはダウンロードが開始される前に削除されちゃったりして、びっくりでした。

で、オンメモリでCSVファイル作って圧縮、ダウンロードまでしてみました。まぁメモリが安くなったからこそできる技ですよね。CSVが小さければいいけど、昔はこんなこと怖くてできなかった。

require ‘rubygems’
require ‘zipruby’

data = “a,b,c\r\nA,B,C”
Zip::Archive.open_buffer(buffer, Zip::CREATE) do |arc|
  arc.add_buffer(“download.csv”,data)
end

send_data(buffer , :type=>’application/zip’, :filename => “download.zip”, :disposition=>’attached’)

オンメモリでCSVちゅーのはどうでもよくて、ポイントはZip::Archiveのadd_bufferでしょう。ziprubyのバージョンにもよりけりなのかもしれません。今回利用したのは0.2.9です。あとはsend_fileじゃなくてsend_dataを使うあたりですかね。

 

関連性のあるエントリ:

  1. RubyonRailsでのファイルのダウンロード
  2. はじめてのAjax
  3. RubyでHTTP経由でのXMLの受信と解析
  4. C#でベーシック認証が必要なページのデータを取得する方法
  5. RubyでZIP圧縮、パスワードも設定する

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
preload preload preload