ファイルをブラウザで表示・演奏させないために
例えば拡張子が.exe,.zip,.binのファイルは普通表示させようとしてもファイルに
保存するかどうか聞いてくると思うんですが、それと同じ設定にすればいいはずです。
.htaccess
出来ないところもあるかもしれませんが、「.htaccess」によってmime typeの指定を
追加します。中身は例えば
Addtype application/octet-stream .lzh
Addtype application/octet-stream .mid
Addtype application/octet-stream .pdf
|
こんな風にすれば.lzh,.mid,.pdfファイルはファイルに保存するようになるはず。この
方法の欠点は、表示・演奏とファイルに保存を使い分けようとするときにちょっと面倒
という事ですね。全部ダウンロードか全部表示・演奏の2者択一ですからね。この方法
ではディレクトリをわけないといけない。でもめんどうですね。
CGI
上の方法では何が変るかというと、普通は見えないんですが、送られてくるデータの
先頭にどんなデータかという事を記述している部分があります。.htaccessなどの設定フ
ァイルを見てサーバーが指定してくれています。.htmファイルの場合は下のようになっ
ています。
ではこれをCGIで直接出力してやりゃいいじゃないかという考えも出来ます。要点だけ
Perlで書きますと下のようになります。あとは自分でやってね
#!/usr/bin/perl
$filename="hogehoge.mid";
open(INFILE,$filename);
#binary/textモードがある場合はbinaryモードにしておく
#binmode(INFILE);
#ファイルからの読み込み
read(IN,$str,$size);
close(IN);
#出力もbinaryモードで
#binmode(STDOUT);
#標準出力への出力
#まずはヘッダ
print "Content-type: application/octet-stream\n\n";
#ここを変えてやればほかのデータイプでもいけるよん
#続いてデータ本体
syswrite(STDOUT,$str,$size);
ホームページQ&Aトップに戻る //
神戸フェニックスラボ2号館