send_file と send_data
RailsからThinreportsを使用してPDFファイルを作っている。
テンポラリディレクトリにPDFを生成し、それをダウンロードさせる。
pdfFile = File.join(Rails.root, 'tmp', fileName + '.pdf') report.generate_file(pdfFile) # PDFファイルの生成 send_file(pdfFile, :filename => 'hoge.pdf') File.delete(pdfFile)
当初はこれでも動いていたのだが、全く同じロジックで別のアプリを作ったら、そっちは"ファイルがないよ"エラーになった。
原因は、PDFのダウンロード前にファイルが削除されてしまうためらしい。
なぜ最初のアプリがちゃんと動くのかは不明だ。殆ど同じ作りなんだけど。
で、作ったファイルをメモリ上に展開してからダウンロードさせるようにした。
pdfFile = File.join(Rails.root, 'tmp', fileName + '.pdf') report.generate_file(pdfFile) # PDFファイルの生成 send_data(File.read(pdfFile), :filename => 'hoge.pdf') File.delete(pdfFile)
これでうまくいった。
TrackBacks
TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/907
この投稿には、まだコメントが付いていません
コメント
_CM_NOTICE