返回列表 回复 发帖
所需阅读权限 1

[转帖]perl文件上传程序,支持多文件,2进制

一个真正支持二进制文件上传,允许多文件上传,可以对文件后缀进行限制,生成完整信息的小程序。。:)
原先的上传由于没有采用binmode方法,所以如果上传图片或二进制文件都会出错,现在这个都已经解决了,而且还可以多文件同时上传。。:)另外加了注释。
代码如下:
default.htm:
<html>
<body>
<form method="OST" action="psupload.pl" ENCTYPE="multipart/form-data">
File 1:
<input type="file" name="FILE1">
<br>
File 2:
<input type="file" name="FILE2">
<br>
<input type="submit" value="Upload!">
</form>
</body>
</html>
psupload.pl:
&#35;如果用CGI方式来行动这个文件,请把下段路径改成你的机器配置
&#35;!f:/activeperl/bin/perl
use CGI;
$upfilecount = 1;
$maxuploadcount = 2; &#35;限制上传文件的最大数
$basedir = "c:/perltest/perlupload"; &#35;上传的文件存放地址
$allowall = "no"; &#35;是否不限制文件后缀上传
@theext =(".zip",".exe",".gif"); &#35;要限制的文件后缀名
print "Content-type: text/html\n\n";
while ($upfilecount <= $maxuploadcount) {
    my $req = new CGI;
    my $file = $req->param("FILE$upfilecount");
    if ($file ne "") {
        my $fileName = $file;
        $fileName =~ s/^.*(\\|\/)//; &#35;用正则表达式去除无用的路径名,得到文件名
        my $newmain = $fileName;
        my $filenotgood;
        if ($allowall ne "yes") {
            $extname = lc(substr($newmain,length($newmain) - 4,4)); &#35;取后缀名
            for(my $i = 0; $i < @theext; $i++){ &#35;这段进行后缀名检测
                if ($extname eq $theext[$i]){
                    $filenotgood = "yes";
                    last;
                }
            }
        }
        if ($filenotgood ne "yes") { &#35;这段开始上传
            open (OUTFILE, ">$basedir/$fileName");
            binmode(OUTFILE); &#35;务必全用二进制方式,这样就可以放心上传二进制文件了。而且文本文件也不会受干扰
            while (my $bytesread = read($file, my $buffer, 1024)) {
                print OUTFILE $buffer;
            }
            close (OUTFILE);
            $message.=$file . " 已成功上传!<br>\n";
        }
        else{
            $message.=$file . " 文件后缀不符合要求,上传失败!<br>\n";
        }
    }
    $upfilecount++;
}
print $message; &#35;最后输出上传信息[DISABLELBCODE]

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。
返回列表