返回列表 回复 发帖

perl文件上传程序,支持多文件,2进制

作者:大自然
email: zhanmr@telekbird.com.cn
日期:2000-11-7 16:37:28

一个真正支持二进制文件上传,允许多文件上传,可以对文件后缀进行限制,生成完整信息的小程序。。:)
其实是我看了精华区的那篇文件上传文件后,感觉有点问题,所以特此更正一下,在此也感谢以前无私奉献的各位兄弟。。
原先的上传由于没有采用binmode方法,所以如果上传图片或二进制文件都会出错,现在这个都已经解决了,而且还可以多文件同时上传。。:)另外加了注释。
最后,我是一个PERL新手,如有不当,还望各位高手指点一二,小生不胜感激:)
代码如下:
  1. default.htm:
  2. <html>
  3. <body>
  4. <form method="POST" action="psupload.pl" ENCTYPE="multipart/form-data">
  5. File 1:
  6. <input type="file" name="FILE1">
  7. <br>
  8. File 2:
  9. <input type="file" name="FILE2">
  10. <br>
  11. <input type="submit" value="Upload!">
  12. </form>
  13. </body>
  14. </html>
复制代码
psupload.pl:
&#35;如果用CGI方式来行动这个文件,请把下段路径改成你的机器配置
  1. &#35;!/usr/bin/perl
  2. use CGI;
  3. &#36;upfilecount = 1;
  4. &#36;maxuploadcount = 2; &#35;限制上传文件的最大数
  5. &#36;basedir = "c:/perltest/perlupload"; &#35;上传的文件存放地址
  6. &#36;allowall = "no"; &#35;是否不限制文件后缀上传
  7. @theext =(".zip",".exe",".gif"); &#35;要限制的文件后缀名
  8. print "Content-type: text/html\n\n";
  9. while (&#36;upfilecount <= &#36;maxuploadcount) {
  10.     my &#36;req = new CGI;
  11.     my &#36;file = &#36;req->param("FILE&#36;upfilecount");
  12.     if (&#36;file ne "") {
  13.         my &#36;fileName = &#36;file;
  14.         &#36;fileName =~ s/^.*(\\|\/)//; &#35;用正则表达式去除无用的路径名,得到文件名
  15.         my &#36;newmain = &#36;fileName;
  16.         my &#36;filenotgood;
  17.         if (&#36;allowall ne "yes") {
  18.             &#36;extname = lc(substr(&#36;newmain,length(&#36;newmain) - 4,4)); &#35;取后缀名
  19.             for(my &#36;i = 0; &#36;i < @theext; &#36;i++){ &#35;这段进行后缀名检测
  20.                 if (&#36;extname eq &#36;theext[&#36;i]){
  21.                     &#36;filenotgood = "yes";
  22.                     last;
  23.                 }
  24.             }
  25.         }
  26.         if (&#36;filenotgood ne "yes") { &#35;这段开始上传
  27.             open (OUTFILE, ">&#36;basedir/&#36;fileName");
  28.             binmode(OUTFILE); &#35;务必全用二进制方式,这样就可以放心上传二进制文件了。而且文本文件也不会受干扰
  29.             while (my &#36;bytesread = read(&#36;file, my &#36;buffer, 1024)) {
  30.                 print OUTFILE &#36;buffer;
  31.             }
  32.             close (OUTFILE);
  33.             &#36;message.=&#36;file . " 已成功上传!<br>\n";
  34.         }
  35.         else{
  36.             &#36;message.=&#36;file . " 文件后缀不符合要求,上传失败!<br>\n";
  37.         }
  38.     }
  39.     &#36;upfilecount++;
  40. }
  41. print &#36;message; &#35;最后输出上传信息
复制代码

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