ファイル(LZHなど)をダウンロードさせる方法は?

[上に] [前に] [次に]
(よ) 1998/07/06(月) 15:25:59
ファイル(lzh)をダウンロードさせたいため、A HREFでリンクを張ったのですが、
ファイルの中身がテキストとして表示されてしまいます。
ディレクトリを掘ってそこにファイルを置き、ブラウザでディレクトリのツリー表示をさせてみると、
lzhファイルがtxt扱いになっています。
原因と、解決策があればご教示願います。
なお、サーバーはリムネット(sm)です。

匿名希望 1998/07/06(月) 16:17:21
もし「.htaccess」ファイルをあなたが置くことが認められている
のなら、(そしてリムのサーバーは皆NCSA系なら)

AddType   application/x-lha-compressed   .lzh

の一行を含む.htaccessファイルをlzhファイルがあるディレクトリ
(かその親ディレクトリ)に置いてみて。これは拡張子lzhのファイ
ルを「テキストファイルではない、これこれのファイルとして扱え」
という指示。(なお、lzhの「これこれ」は所定のものがない。
まぁ上のものでいいだろう。これはring.asahinet.or.jpの設定だ。)

リムネットでlzhの設定がなされていないとは驚きだ。それはともか
く、ブラウザーはサーバーから送られてくるファイルがどのような
ファイルであるか(一番大事なのは、画面に表示すべきものかファ
イルとして保存すべきものか、の違い)をブラウザー自身が(拡張
子などから)判断するのでは必ずしもない。最近のIEはある程度自
分でも判断するようだが、基本は、サーバーが教えてくれる「種別」
をそのまま受け入れる。ところで、lzhファイルは海外では必ずし
も広まっていないので、米国製のサーバーが多い世の中、lzhファ
イルを未知のファイルと見なす設定になっているところが過去に少
なくなかった。そして、未知のファイルはテキストファイルとして
扱われる設定になっていることが多い。よって、今回は、サーバー
が誤って「lzhはテキストファイルだよ」とブラウザーに教えたの
で、ブラウザーは素直にそれを「表示」してしまったというわけだ。

なお、一旦不本意にでも画面に表示されてしまうと、ブラウザーや
proxy serverのキャッシュに「aaa.lzhファイルはテクストファイ
ルである」という誤った情報が記録されるため、上記のように
AddType宣言をその後で行っても事態は改善しないことが多い。
その場合は、ファイル名を変えるか、ブラウザー/proxyのキャッ
シュを消すしかない。

(よ) 1998/07/06(月) 16:39:10
[[解決]]
ご回答、ありがとうございます。

.htaccessを修正したところ、正常に動作させることができました。
とういことは、他にもファイルとしてバイナリーダウンロードさせたい場合には、
それぞれ AddType 宣言を追加するか、lzhやzipなどのファイルにしてから置くかする必要があるんですね。
#今のところ、そういう必要性はありませんが

非常にわかりやすい回答でよく理解することができました。
ありがとうございました。

[上に] [前に] [次に]