| 
 
     
- UID
 - 1 
 - 威望
 - 1240 点 
 - 金钱
 - 24019 金币 
 - 点卡
 - 317 点 
 
  | 
1#
 
发表于 2005-8-24 14:36
 |  只看该作者
 
 
 
 perl文件上传程序,支持多文件,2进制
作者:大自然 
email: zhanmr@telekbird.com.cn 
日期:2000-11-7 16:37:28 
一个真正支持二进制文件上传,允许多文件上传,可以对文件后缀进行限制,生成完整信息的小程序。。:) 
其实是我看了精华区的那篇文件上传文件后,感觉有点问题,所以特此更正一下,在此也感谢以前无私奉献的各位兄弟。。 
原先的上传由于没有采用binmode方法,所以如果上传图片或二进制文件都会出错,现在这个都已经解决了,而且还可以多文件同时上传。。:)另外加了注释。 
最后,我是一个PERL新手,如有不当,还望各位高手指点一二,小生不胜感激:) 
代码如下:- default.htm:
 - <html>
 - <body>
 - <form method="POST" 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: 
#如果用CGI方式来行动这个文件,请把下段路径改成你的机器配置- #!/usr/bin/perl
 - use CGI; 
 - $upfilecount = 1;
 - $maxuploadcount = 2; #限制上传文件的最大数
 - $basedir = "c:/perltest/perlupload"; #上传的文件存放地址
 - $allowall = "no"; #是否不限制文件后缀上传
 - @theext =(".zip",".exe",".gif"); #要限制的文件后缀名
 - 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/^.*(\\|\/)//; #用正则表达式去除无用的路径名,得到文件名
 -         my $newmain = $fileName;
 -         my $filenotgood;
 -         if ($allowall ne "yes") {
 -             $extname = lc(substr($newmain,length($newmain) - 4,4)); #取后缀名
 -             for(my $i = 0; $i < @theext; $i++){ #这段进行后缀名检测
 -                 if ($extname eq $theext[$i]){
 -                     $filenotgood = "yes";
 -                     last;
 -                 }
 -             }
 -         }
 -         if ($filenotgood ne "yes") { #这段开始上传
 -             open (OUTFILE, ">$basedir/$fileName");
 -             binmode(OUTFILE); #务必全用二进制方式,这样就可以放心上传二进制文件了。而且文本文件也不会受干扰
 -             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; #最后输出上传信息 
 
  复制代码 |   
 
 
 
 
                     我是一个呼吸着现在的空气而生活在过去的人 
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠 
                                     我已习惯了孤独,爱上孤独 
                                 他让我看清了自我,还原了自我 
                             让我再静静的沉思中得到快乐和满足 
                                   再孤独的世界里我一遍又一遍 
                                   不厌其烦的改写着自己的过去 
                                             延伸到现在与未来 
                                       然而那只是泡沫般的美梦 
                                 产生的时刻又伴随着破灭的到来 
                         在灰飞烟灭的瞬间我看到的是过程的美丽 
                                      而不是结果的悲哀。。。 
 | 
 
 
 
 |