新規記事投稿 フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: 圧縮ファイルをダウンロードさせる方法を教えて下さい
Date: 1996/10/10 22:26:28
Reference: mesh.program/00098

10月10日に、楠 哲士さんは書きました。
><a href="hoge.cgi">hoge.gz</a>
>
>#!/bin/sh
>echo "Content-type: application/x-gzip"
>echo "Content-Disposition: attachment; filename=hoge.gz"
>echo ""
>cat hoge.gz
>
>なんてことをするのかな? これはサーバーへの負荷が高いのだろうか?
>
ほう、Content-Disposition: なんてものがあるのですか。
見た所、便利そうですが、HTTP/1.0HTTP/1.1 どちらの規格にも見当たらないですね。

CGIでファイルを出力すると、ダウンロード時のファイル名が CGI名になってしまうのが
難点でしたので、Content-Disposition: が使えると便利ですね。

サーヴァ負荷と言うことでは、CGI実行に1プロセス、cat実行に1プロセス消費するので、
単なるリンク(HTMLのみ)に比べれば負荷をかけている、とは言えますね。
まあ、実行される頻度との兼ね合いでしょうか。

>なお、Content-Dispositionを認識しないブラウザーもあるらしいから、念の
>ため <a href="hoge.cgi/hoge.gz">hoge.gz</a> と呼ぶ。/hoge.gzの部分は
>ダミー。しかしこれはサーバーのバグ依存なのだろうか?
>
なるほど、これはアイデアですね。
CGIに対するPATH変数は、ブラウザから見ればコンテンツと見分けが付かないですから
ダウンロードされるファイル名はPATH変数のそれになるわけですか。

サーヴァのバグ依存と言うわけではなくれっきとした機能ですが、PATH変数は全ての
サーヴァで利用できるわけではないですから、必ず使えるわけではないですね。
ただし、Content-Disposition: の様にブラウザ依存ではないですら、サーヴァが
対応していれば必ず使えるわけで、こちらの方が安心ですね。

>ブラウザー依存でいいなら
><meta http-equiv="refresh" content="1; http://www.cup.com/uni/hoge.gz">
>とも書けるらしい。しかもこれだとサーバーの負荷が軽くなるとか聞いたが、
>NPH相当ということ?
>
これは単に自動でペーヂを移っているだけですから、CGIで Location: をしているのと
同じで、手動リンクと同じ MIME type を出力するはずです。