?????

ファイルをブラウザで表示・演奏させないために

 例えば拡張子が.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ファイルの場合は下のようになっ ています。
Content-Type: text/html

 ではこれを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号館