中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > Cgi/Perl
perl文件上传程序,支持多文件,2进制
作者:佚名 时间:2004-08-05 10:42 出处:互连网 责编:chinaitpower
              摘要:perl文件上传程序,支持多文件,2进制
一个真正支持二进制文件上传,允许多文件上传,可以对文件后缀进行限制,生成完整信息的小程序。。:)

其实是我看了精华区的那篇文件上传文件后,感觉有点问题,所以特此更正一下,在此也感谢以前无私奉献的各位兄弟。。
原先的上传由于没有采用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方式来行动这个文件,请把下段路径改成你的机器配置
#!f:/activeperl/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; #最后输出上传信息 
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有