  
- UID
- 1
- 威望
- 1240 点
- 金钱
- 24019 金币
- 点卡
- 317 点
|
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; #最后输出上传信息
复制代码 |
我是一个呼吸着现在的空气而生活在过去的人
这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
我已习惯了孤独,爱上孤独
他让我看清了自我,还原了自我
让我再静静的沉思中得到快乐和满足
再孤独的世界里我一遍又一遍
不厌其烦的改写着自己的过去
延伸到现在与未来
然而那只是泡沫般的美梦
产生的时刻又伴随着破灭的到来
在灰飞烟灭的瞬间我看到的是过程的美丽
而不是结果的悲哀。。。
|
|