精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● CGI>>编程技巧>>WEBMAIL的附件如何实现

主题:WEBMAIL的附件如何实现
发信人: tanshuai()
整理人: workingnow(2002-10-30 13:48:53), 站内信件
【 在 xd2956 (老邪) 的大作中提到: 】
: 下载的WEBMAIL没有附件功能,我想修改...
: 请问如何实现..谢谢各位大虾
#!/usr/bin/perl  
BEGIN {  

$SAVE_DIRECTORY = "/var/www/htdocs/wwwroot/mp3";  
$MAXIMUM_UPLOAD = 7340032;     
$ALLOW_INDEX = 0;     
$SUCCESS_LOCATION = "http://ts.cncenter.com/upload/finish.htm"  

$| = 1;  
chop $SAVE_DIRECTORY if ($SAVE_DIRECTORY =~ /\/$/);  
use CGI qw(:standard);  
$query = new CGI;  

if ( (!(-e $SAVE_DIRECTORY)) ||  
 (!(-W $SAVE_DIRECTORY)) ||  
 (!(-d $SAVE_DIRECTORY)) ) {  
print header;  
print <<__END_OF_HTML_CODE__;

<HTML>  
<HEAD>  
<TITLE>错误的目录</TITLE>  
</HEAD>  
<BODY BGCOLOR="#FFFFFF">  
<H1>目录有问题</H1>  
<HR SIZE=1>  
<CENTER><a href="/">返回主页</CENTER>  
</BODY>  
</HTML>  

__END_OF_HTML_CODE__  
exit;  
}  

foreach $key (sort {$a <=> $b} $query->param()) {  
next if ($key =~ /^\s*$/);  
next if ($query->param($key) =~ /^\s*$/);  
next if ($key !~ /^file-to-upload-(\d+)$/);  
$Number = $1;  

if ($query->param($key) =~ /([^\/\\]+)$/) {  
$Filename = $1;  
$Filename =~ s/^\.+//;  
$File_Handle = $query->param($key);  

if (!$ALLOW_INDEX && $Filename =~ /^index/i) {  
print header;  
print <<__END_OF_HTML_CODE__;

<HTML>  
<HEAD>  
<TITLE>Error: Filename Problem</TITLE>  
</HEAD>  
<BODY BGCOLOR="#FFFFFF">  

</HTML>  

__END_OF_HTML_CODE__  
exit;  
}  
} else {  
$FILENAME_IN_QUESTION = $query->param($key);  

print header;  
print <<__END_OF_HTML_CODE__;

<HTML>  
<HEAD>  
<TITLE>文件出问题</TITLE>  
</HEAD>  
<BODY BGCOLOR="#FFFFFF">  
<p>文件出问题!!  
<center><a href=/>返回</center>  
</BODY>  
</HTML>  

__END_OF_HTML_CODE__  
exit;  
}  

        if (!open(OUTFILE, ">$SAVE_DIRECTORY\/$Filename")) {  
            print "Content-type: text/plain\n\n";  
            print "-------------------------\n";  
            print "错误:\n";  
            print "-------------------------\n";  
            print "文件: $SAVE_DIRECTORY\/$Filename\n";  
            print "-------------------------\n";  
        print "打开文件写时出错\n";  
         #print "for Writing.\n\n";  
         print"<center><a href=/>返回</center>";  
            exit;  
        }  

undef $BytesRead;  
undef $Buffer;  

        while ($Bytes = read($File_Handle,$Buffer,1024)) {  
$BytesRead += $Bytes;  
            print OUTFILE $Buffer;  
        }  

push(@Files_Written, "$SAVE_DIRECTORY\/$Filename");  
$TOTAL_BYTES += $BytesRead;  
$Confirmation{$File_Handle} = $BytesRead;  

        close($File_Handle);  
close(OUTFILE);  

        chmod (0666, "$SAVE_DIRECTORY\/$Filename");  
    }  

$FILES_UPLOADED = scalar(keys(%Confirmation));  


if ($TOTAL_BYTES > $MAXIMUM_UPLOAD && $MAXIMUM_UPLOAD > 0) {  
foreach $File (@Files_Written) {  
unlink $File;  
}  

print header;  
print <<__END_OF_HTML_CODE__;

<HTML>  
<HEAD>  
<TITLE>错误</TITLE>  
</HEAD>  
<BODY BGCOLOR="#FFFFFF">  
<H1>文件超过了7M上限</H1>  
<P>  
                         
<P>  
<HR SIZE=1>  
<CENTER><A HREF="/">返回主页</CENTER>  
</BODY>  
</HTML>  

__END_OF_HTML_CODE__  
exit;  
}  

if ($SUCCESS_LOCATION !~ /^\s*$/) {  
print $query->redirect($SUCCESS_LOCATION);  
} else {  


print header;  
print <<__END_OF_HTML_CODE__;

<HTML>  
<HEAD>  
<TITLE>上传完成!</TITLE>  
</HEAD>  
<BODY BGCOLOR="#FFFFFF">  
<H1>上传完成!</H1>  
<P>  

__END_OF_HTML_CODE__  

foreach $key (keys (%Confirmation)) {  
print "$key - $Confirmation{$key} bytes\n";  
}  

print <<__END_OF_HTML_CODE__;

</PRE>  
<P>  
Thank you for using the File Upload! system.  
<P>  
<HR SIZE=1>  
</HTML>  

__END_OF_HTML_CODE__  
exit;  
}  



--
CGI版主(BM) ——  ☆★天水★☆ №↑1.
☆网络世界,你我共行,创出新意,创出未来,创出新世界!★
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
□E-Mail: [email protected] 【Http://ts.cncenter.com】
〓I Seek You!ICQ UIN : 25856530 (AOL) OICQ ID:66552
'''''''''''''''''''''''''''''''''''''''''''''''''''''

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.110.24.154]

[关闭][返回]