ファイルのダウンロードを自動で開始させる方法

HTTPヘッダで Refresh を指定して自動ダウンロード

<HEAD>内に記載する「<META HTTP-EQUIV= …>」は「HTTPヘッダと同じに解釈してね」という意味ですので、上記と同じ方法をHTTPヘッダを使っても実装できます。

フォーム送信の結果ページからダウンロードさせたい場合や、毎回ダウンロード対象ファイルが異なる場合はメタタグで指定せずに CGI などでヘッダを送信することにより実装できます。

Refresh ヘッダ書き出しの Perl サンプルコード

my $download_filename = 'filename.zip';

binmode STDOUT;
print "Content-Type: text/html;charset=EUC-JP\r\n"; #文字コードに合わせて指定
print "Cache-Control: no-cache\r\n";
print "Pragma: no-cache\r\n";
print "Refresh: 0;URL=http://www.example.co.jp/temp/$download_filename\r\n";
print "\r\n";
print <<PAGECONTENT
<HTML>
<HEAD>
<!– HTTPヘッダで情報を送る場合、HTTP-EQUIV のメタタグは不要になる –>
<TITLE>ダウンロード中です</TITLE>
</HEAD>
<BODY>
<P>
ダウンロード中です…
</P>
<P>
自動でダウンロードが始まらない場合は
<a href=\"/temp/$download_filename\">ここ</a>をクリックして下さい。
</P>
</BODY>
</HTML>
PAGECONTENT