プロが教える店舗&オフィスのセキュリティ対策術

みなさん、はじめまして。
私は今、HP製作中のおやじです。

昨日、フリーのCGIダウンロードしました。
このCGIは、PC上のJPG、GIFファイルを自動で連番.JPG,連番.GIFという具合に元のファイル名を連番にしてサーバーにアップロードしてくれる「日記帳的」CGIです。

*そこでチョット加工してWORD,EXCELファイルもアップロード出来る様にしました。

*ついでに動画ファイル(MPG,AVI,MOV)も
アップロード出来る様にしたいのですが、どうしたらいいのか解かりません。この辺がもうおやじの限界です。
どなたか、ヘルプお願いいたします。

*ちなみにCGIソースはこうなっています。
 これだけでわかるでしょうか?

sub img {
$type = '';
foreach (@in) {
if ($_ =~ /Content-type:(.+)/i) {
if ($1 =~ /image\/.*jpg/i) {$type = 'jpg';}
elsif ($1 =~ /image\/gif/i) {$type = 'gif';}
elsif ($1 =~ /msword/i) {$type = 'doc';}
elsif ($1 =~ /ms-excel/i) {$type = 'xls';}
elsif ($1 =~ /pdf/i) {$type = 'pdf';}
last;
}
}

if (!$type) {&error("このファイルはアップロードできません");}

$img_file = "$_[0].$type";
open(OUT,">$img_file") || &error("画像ファイルを作成できません");
binmode OUT;
print OUT $in{'img'};
close OUT;
chmod (0666,$img_file);
}

---------以上--------------------------------

A 回答 (2件)

見たところ、



> sub img {
> $type = '';
> foreach (@in) {
> if ($_ =~ /Content-type:(.+)/i) {
> if ($1 =~ /image\/.*jpg/i) {$type = 'jpg';}
> elsif ($1 =~ /image\/gif/i) {$type = 'gif';}
> elsif ($1 =~ /msword/i) {$type = 'doc';}
> elsif ($1 =~ /ms-excel/i) {$type = 'xls';}
> elsif ($1 =~ /pdf/i) {$type = 'pdf';}
> last;
> }
> }
の部分だけのようです。

MIME Type での判断にどれだけ意味があるかは疑問ですが、参考UELを元に

elsif ($1 =~ /msvideo/i) {$type = 'avi';}

などを付け足すだけでいいのではないでしょうか。

参考URL:http://homepage.nifty.com/mime/#list
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
早速やってみます。

お礼日時:2004/04/07 14:32

Typoです。


UEL -> URL

で、補足ですが、仮に今回の修正を加えても、利用者の環境によってはうまく動かないこともあります。

こういう方法で、拡張子の付け直しを行なっている以上仕方の無いことなんでしょうが・・・。(MIMETypeと拡張子の組み合わせは環境によって変わることがありますので。)
    • good
    • 0
この回答へのお礼

返信、どうもありがとうございました。

お礼日時:2004/04/07 14:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!