読者です 読者をやめる 読者になる 読者になる

end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転します

perl cgiでダウンロードさせるファイル名を指定 (RFC6266準拠版)

perl cgiでダウンロードさせるファイル名を指定 - end0tknrのkipple - web写経開発
以前、↑こんな感じで記載しましたが、最近、RFC6266なブラウザも増えてきたはずなので、書いてみた。
動かしていませんが、多分、↓こんな感じ

use CGI;
use Encode;

## refer to RFC6266 4.3
sub get_http_download_header {
    my ($self,$filename) = @_;

    my $cp932filename = Encode::encode('cp932', $filename);
    my $urlencoded_utf8filename =
        $self->url_encode( Encode::encode('utf8', $filename) );

    return header(-type=>"application/octet-stream",
                  -Content_Disposition=>
                  join('; ',
                       q|attachment|,
                       qq|filename="$cp932filename"|,
                       qq|filename*=UTF-8''$urlencoded_utf8filename|));

}