はちゅにっき

こっちのブログはまったり更新

ZIP で固めて、名前をつけて保存

3k実験で使おうかと思ったけどやめた。
でも、一応メモとして残しておこうかなー。


ZIPで固めて ⇒ Archive::Zip
名前をつけて保存 ⇒ Content-Disposition: filename=<ファイル名> を出力

#!/usr/bin/perl -w

use Archive::Zip;
use IO::File;
use warnings;
use strict;

# 保存するテキストファイルの名前
my $filename = 'hoge.txt';

# テキストファイルの中身
my $txt = <<"__EOT__";
固めるtext
固めるテンプル
この文字列を $filename って名前のファイルに保存して固める
__EOT__

# zip に固めるための準備
my $zip = Archive::Zip->new;

# $text を $filename って名前で保存し、ZIPに固める
my $member = $zip->addString($txt, $filename);

# 固めたものをHTTP で出力するための準備
my $stdout = IO::File->new->fdopen(fileno(STDOUT), "w") || croak($!);

# こんてんつたいぷ
$stdout->printflush("Content-Type: application/zip\n");

# 名前を download.zip として出力
$stdout->printflush("Content-Disposition: filename=download.zip\n");

# キャッシュさせない
$stdout->printflush("Pragma: no-cache\n\n");

# 固めた内容を出力
$zip->writeToFileHandle($stdout, 0);

# 閉じる
$stdout->close;

どーでもいいけど、ソースを色分けする方法ってあるんですか?
スーパーpre記法」で、できるんですネ。
さすが はてな。
便利です。


あ、"3k実験"とか、露骨な検索ワードで飛んでこないでね。
そんな副手のメモでした。