预备知识:Javascript, PHP(少量)/Perl(少量)!
测试环境:Windows2000 + IIS5 + PHP (Win98 + PWS + PHP3 失败,估计是配置出了问题)
目录结构:
/wwwroot/cgi-bin/fileup.php (文件接收)
/wwwroot/www/test/phpfileup.htm (文件提交)
/wwwroot/www/test/tmp/ (默认保存目录)
前言:文件上传,简单又麻烦。下面是上传文件的提交页面,利用该页面你不仅可以生成 1000 个上传文件框(实际是任意多个 0~n ),而且可分别指出它们的保存路径。
提交页面的文件输入框为命名为: file0,file1,...file100,...fileN
提交页面的文件路径框为命名为: path0,path1,...path100,...pathN
由于页面的生成非常简单,所以就不在此多解释了,用 javascript 定义了两个函数,check() 用于提交页面,create()用于生成文件上传框。如果你有什么更好的建议或有什么疑问请 Email: gearsoft@netease.com
phpfileup.htm
--------------------------------------------------------
<html>
<head>
<title></title>
<style>
.lbtn {font-family:verdana;font-size:10.5pt;}
.ist {font-family:verdana;font-size:14.8px;size:400}
</style>
<script LANGUAGE="javascript"> <br>function check(){ <br>document.frm1.submit(); <br>document.body.innerHTML="Uploading Please wait!"; <br>} <br><br>var i=0; <br>function create(){ <br>var sfrm = document.frm1.innerHTML; <br>var icnt = cnt.value; <br>for(j=0;j<icnt;j++) <br>{ <br>sfrm = sfrm + "请选择文件 "+i+" <input type=file name='file"+i+"' class=ist>"; <br>sfrm = sfrm + " 路径:<input type=text name='path"+i+"' value='../www/test/tmp/' class=ist>"; <br>sfrm = sfrm + "<br>"; <br>i++; <br>} <br>document.frm1.innerHTML = sfrm; <br>document.frm1.cnt.value=i; <br>} <br><br></script> </P>
<P></head> <br><body class=lbtn onload="document.frm1.cnt.value=cnt.value;"> <br>请输入要上传文件的数量: <input type=text name=cnt value="10" class=ist onchange="document.frm1.cnt.value=this.value;"> <br><input type=button name=bt1 value="生成上传文件框" onclick="create();" class=lbtn> <br><input type=button name=bt1 value="上传" onclick="check();" class=lbtn> <br><input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn> <br><br><form name=frm1 method="post" Enctype="multipart/form-data" action="../../cgi-bin/fileup.php"> <br><input type=hidden name=cnt value="20" class=ist> <br></form> <br><br><input type=button name=bt1 value="上传" onclick="check();" class=lbtn> <br><input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn> <br></body> <br></html> <br>文件提交页面既已生成,下面任务就很明确了:将提交的文件内容保存到服务器上。 </P>
<P></P>
<P>下面我们用两种方法来实现这个功能: </P>
<P>1. 用 PHP 来保存: <br>我们先定义一个文件保存函数 fup() 它有两个参数: <br>$filename: 文件内容 <br>$fname: 文件名(包含路径) <br>剩下的就是写一个循环将文件依次写入服务器。这里要简单说明一下: <br>PHP 对于上传文件的处理是这样的:如果提交的文件框我为 file0, 那么提交给 PHP 的文件内容保存在变量 $file0 中,而文件名则保存在 $file0_name 中。这样在这个循环中我要做的就是将提交页面提交的内容分解出来,实现过程请看下面的代码。 </P>
<P>fileup.php <br>---------------------------------------------------------------------- <br><? <br>function fup($filename,$fname) <br>{ If($filename != "none") { <br>copy($filename,$fname); <br>unlink($filename); <br>} <br>} </P>
<P>for($i=0;$i<$cnt;$i++) <br>{ <br>$ffnn="file".$i; <br>$ffnnname=$ffnn."_name"; <br>$ffpath="path".$i; <br><br>//print $$ffnn; <br>print $$ffnnname; <br>print "<br>"; <br><br>fup($$ffnn,$$ffpath.$$ffnnname); //"../www/test/tmp/" <br>} <br>?> <br>---------------------------------------------------------------------- </P>
<P>2. 用 PERL 来保存: <br>它们实现的原理完全一样,在此不多说,请看代码: </P>
<P>fileup.cgi(fileup.pl) <br>---------------------------------------------------------------------- <br>#!/usr/bin/perl </P>
<P>use CGI qw/:standard/; </P>
<P>if ($ENV{'CONTENT_TYPE'} !~ /multipart/form-data/) { <br>print "Cache-Control: no-cachenPragma: no-cachen" . <br>"Content-Type: text/htmlnn" . <br>"<html><body>Your web browser cannot upload files. Sorry.</body></html>"; <br>exit 0; <br>} </P>
<P><br>$cntfile=param('cnt'); <br>print header; <br>print start_html; <br>#print "Receiving Please wait...."; </P>
<P>&g_head; </P>
<P>#$writed = '../www/test/tmp/'; </P>
<P>for ($i=0;$i<$cntfile;$i++){ <br>$paramfile = 'file'.$i; <br>$parampath='path'.$i; <br><br>$writed=param($parampath); </P>
<P>&upfile; <br>&g_body; <br>} </P>
<P>&g_bott; </P>
<P>#<<<<<<<<<<<<<<<<<<<<<以下为自定义过程<<<<<<<<<<<<<<<<<<<<<<<<< </P>
<P>sub upfile <br>{ <br>$maxdata = 512000; <br># $writed = '../www/test/tmp/'; </P>
<P><br>$strRFname=reverse $xfile; <br>$intIndex=index($strRFname,'\'); <br>$strNetFname=substr($strRFname,0,$intIndex); <br>$strNetFname=scalar reverse $strNetFname; <br><br><br>if((stat $xfile)[7]>$maxdata){ <br>print "Status: 411 Size Not Allowedn" . <br>"Content-Type: text/htmlnAllow: POSTnn" . <br>"<html><head><title>411 411 Size Not Allowed</title></head><body><h1> You got big problem. Try again.</h1></body></html>n"; <br>exit 0; <br>} <br><br><br>binmode $xfile; <br>use File::Copy; <br>copy($xfile,$writed.$strNetFname); <br>} </P>
<P>sub g_head{ <br>print '<table border=1 align=center>'; <br>print '<tr><td colspan=3 align=center>文件上传结果(Upload Result)</td></tr>'; <br>print '<tr align=center>'; <br>print ' <td>SourceFile:</td>'; <br>print ' <td>DestFile:</td>'; <br>print ' <td>Upload</td>'; <br>print '</tr>'; <br>} </P>
<P>sub g_body{ <br>print '<tr>'; <br>print ' <td>'.$xfile .'</td>'; <br>print ' <td>'.$writed.$strNetFname.'</td>'; <br>print ' <td>OK!</td>'; <br>print '</tr>'; <br>} </P>
<P>sub g_bott{ <br>print '</table>'; <br>} <br>---------------------------------------------------------------------- <br>如有好的建议请 Email: gearsoft@netease.com </P>
<P> </P></font></div>
<div></div>
</div><div id="Message" class="Message"></div></font></div>
<script type="text/javascript">
document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData("text"); if (text) { text = text + "\r\n本篇文章来源于 中国建站之家 原文链接:"+location.href; clipboardData.setData("text", text); } }, 100 ) }
</script>
<br>
<a href="javascript:window.open('http://shuqian.qq.com/post?from=3&title='+encodeURIComponent(document.title)+'&uri='+encodeURIComponent(document.location.href)+'&jumpback=2&noui=1','favit','width=930,height=470,left=50,top=50,toolbar=no,menubar=no,location=no,scrollbars=yes,status=yes,resizable=yes');void(0)" style="text-decoration:none;color:#155da5;display:block;background:url('http://shuqian.qq.com/img/add.gif') no-repeat 0px 0px;height:23px;width:300px;padding:2px 2px 0px 20px;font-size:14px;">将本文收藏到QQ书签与更多好友分享</a>
<div></div>
</td>
<table width="575" border="0" cellpadding="0" cellspacing="0">
<tr>
</tr>
<tr>
<td align="right" height=25 bgcolor=#F7F7F7 >
<script language=javascript src=/wz/sg.JS></script>
[<a href=javascript:window.print()>打 印</a>]
</tr>
</table>
<table width="575" border="0" cellpadding="0" cellspacing="0">
<tr>
</tr>
<tr>
<td align="right" height=25 bgcolor=#F7F7F7 style="display:block;padding:0px 10px">
<font color=#000000>[<script language=JavaScript src="/Article/Hits.Asp?ArticleID=851"></script>]</font>
[<a href="javascript:history.go(-1)">返回上一页</a>]
[<a href="/user/favorite.asp?action=add&topic=让你同时上传 1000 个文件">收 藏</a>]</td>
</tr>
<tr>
<table width="575" border="0" cellpadding="0" cellspacing="0">
<tr>
</tr>
<tr>
<td style="display:block;padding:0px 10px"><div><font color=#000000>上一篇文章:</font><a href=/Article/10/133/2005/20050718850.html>一个个人网页自动化生成系统(1)</a></div><div><font color=#000000>下一篇文章:</font><font color=#000000><a href=/Article/10/133/2005/20050718852.html>PHP, JScript 和 VBScript 函数和类的语法</a></font></div></td>
</tr>
</table>
<table width="575" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="titlebg1">∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [<a href=/Article/comment.asp?ArticleID=851 target=_blank>更多评论</a>...]</td>
</tr>
<tr valign="top">
<td></td>
</tr>
</table>
</td>
<td width="188" class="tableleft"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="titleback1">精彩推荐</td>
</tr>
<tr>
<td height="260" valign="center" class="showbody1"><script language=javascript src=/ad/180601.js></script></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="titleback1">热门文章</td>
</tr>
<tr>
<td height="100" valign="top" class="showbody1"><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr>
<td class="showlist11">· <a href='/Article/10/138/2005/200507256912.html' class="showlist" title="注册码大全二">注册码大全二</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/10/138/2005/200507256914.html' class="showlist" title="注册码大全四">注册码大全四</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/10/138/2005/200507256911.html' class="showlist" title="注册码大全一">注册码大全一</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/196/197/2005/2005081911736.html' class="showlist" title="要10G免费网络硬盘的请进来!">要10G免费网络硬盘的请进..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/206/2007/2007030319347.html' class="showlist" title="通过google 赶快来赚美金">通过google 赶快来赚美金..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/10/138/2005/200507256919.html' class="showlist" title="注册码大全十">注册码大全十</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/14/253/2005/2005092114218.html' class="showlist" title="头像-qq头像(qq新头像)4">头像-qq头像(qq新头像)4..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/13/150/2006/2006022316028.html' class="showlist" title="让你轻松架设FTP服务器1">让你轻松架设FTP服务器1..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/10/138/2005/200507256913.html' class="showlist" title="注册码大全三">注册码大全三</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/14/244/2005/2005092014121.html' class="showlist" title="梦幻背景图片7">梦幻背景图片7</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/14/249/2005/2005092114181.html' class="showlist" title="卡通动物图片6">卡通动物图片6</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/14/269/2005/2005092114241.html' class="showlist" title="网页制作素材-按钮素材2">网页制作素材-按钮素材2..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/13/150/2006/2006022316032.html' class="showlist" title="让你轻松架设FTP服务器5">让你轻松架设FTP服务器5..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/14/244/2005/2005092014153.html' class="showlist" title="风景图片8">风景图片8</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/10/138/2005/200507256918.html' class="showlist" title="注册码大全九">注册码大全九</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/13/150/2006/2006022316029.html' class="showlist" title="让你轻松架设FTP服务器2">让你轻松架设FTP服务器2..</a></td>
<td class="showlist12"></td>
</tr></table></td>
</tr>
<tr>
<td height="2" bgcolor="#FFFFFF"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="titleback1">关注此文读者还看过</td>
</tr>
<tr>
<td height="100" valign="top" class="showbody1"><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr>
<td class="showlist11">· <a href='/Article/190/194/2006/2006101717745.html' target="_blank" class="showlist" title="个人网站如何提高网站的Google PR值2">个人网站如何提高网站的..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/223/291/2006/2006112318163.html' target="_blank" class="showlist" title="国家清查ICP牌照 Google向信产部提出牌照申请">国家清查ICP牌照 Google..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/10/131/2005/200507205367.html' target="_blank" class="showlist" title="从头创建 Visual Basic .NET 控件 (八)">从头创建 Visual Basic ..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/10/130/2005/200507192626.html' target="_blank" class="showlist" title="ASP开发中数据库文件调用(3)">ASP开发中数据库文件调用..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/11/139/2007/2007010718649.html' target="_blank" class="showlist" title="Dreamweaver行为全接触1">Dreamweaver行为全接触1..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/11/139/2005/2005122915113.html' target="_blank" class="showlist" title="用Dreamweaver MX实现网站批量更新">用Dreamweaver MX实现网..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/223/291/2007/2007020319055.html' target="_blank" class="showlist" title="MySpace中国归属权之争">MySpace中国归属权之争</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/10/133/2005/200507216148.html' target="_blank" class="showlist" title="在服务端进行目录建立、删除,文件上传、删除的过程">在服务端进行目录建立、..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/223/291/2007/2007080321186.html' target="_blank" class="showlist" title="2007上半年网络游戏企业报告总结">2007上半年网络游戏企业..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/11/140/2005/200508089893.html' target="_blank" class="showlist" title="FLASH内置组件CheckBox(复选框)的应用">FLASH内置组件CheckBox(..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/190/192/2006/2006110717865.html' target="_blank" class="showlist" title="谈谈网站设计的10个要点1">谈谈网站设计的10个要点..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/223/291/2006/2006050516414.html' target="_blank" class="showlist" title="微软可能将MSN出售给雅虎 联手对抗Google">微软可能将MSN出售给雅虎..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/190/194/2007/2007032119463.html' target="_blank" class="showlist" title="提高Google Adsense点击率的方法">提高Google Adsense点击..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/190/191/2007/2007031819355.html' target="_blank" class="showlist" title="网站推广大法20招(各网站适用!)">网站推广大法20招(各网..</a></td>
<td class="showlist12"></td>
</tr><tr>
<td class="showlist11">· <a href='/Article/10/130/2005/200507206039.html' target="_blank" class="showlist" title="怎样才能知道访问者从哪里来?">怎样才能知道访问者从哪..</a></td>
<td class="showlist11"></td>
</tr><tr>
<td class="showlist12">· <a href='/Article/11/140/2005/2005081211028.html' target="_blank" class="showlist" title="flashremoting实践(二)-hello world for .net">flashremoting实践(二)..</a></td>
<td class="showlist12"></td>
</tr></table></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="titleback1">相关文章</td>
</tr>
<tr>
<td height="100" valign="top" class="showbody1">· <a href="/Article/10/133/2005/200507309004.html" title='让你同时上传 1000 个文件 (二)'>让你同时上传 1000 个文件 ..</a><br>
· <a href="/Article/10/133/2005/200507309003.html" title='让你同时上传 1000 个文件 (一)'>让你同时上传 1000 个文件 ..</a><br></td>
</tr>
</table>
</td>
</tr>
</table>
<table width="778" border="0" align="center" cellpadding="0" cellspacing="0" class="tableborder">
<tr>
<td height="3"></td>
</tr>
</table>
<table width="778" border="0" align="center" cellpadding="0" cellspacing="0" class="tableborder">
<tr>
<td height="23" align="right">
<table width="100%" border="0" cellspacing="0" class="tablebody8" cellpadding="0">
<tr>
<td height="5"></td>
</tr>
<tr>
<td height="23" align="right" valign="middle"><center><a href="/support/about.asp" class="navmenu2">关于本站</a> -
<a href="/support/help.asp" class="navmenu2">网站帮助</a> -
<a href="/support/advertise.asp" class="navmenu2">广告合作</a> -
<a href="/support/declare.asp" class="navmenu2">下载声明</a> -
<a href="/link/" target="_blank" class="navmenu2">友情连接</a> -
<a href="/support/sitemap.asp" class="navmenu2">网站地图</a> -
<a href="#" target="_blank" class="navmenu2">人才招聘</a>
</tr>
</table></td>
</tr>
<tr>
<td height="1"></td>
</tr>
</table>
<table width="778" border="0" align="center" cellpadding="0" cellspacing="0" class="tableborder">
<tr>
<td height="60" align="center" class="tablebody1">网站合作、内容监督、商务咨询:QQ: 9576619
<br>
Copyright ? 2005--2008 中国建站之家版权所有
<br><a href="http://www.miibeian.gov.cn" target="_blank" title="粤ICP备05092265号"><font color=#000000>粤ICP备05092265号
</font><br><script src='http://s6.cnzz.com/stat.php?id=44148&web_id=44148&show=pic' language='JavaScript' charset='gb2312'></script> </td>
<script language="javascript" src="/inc/Std_StranJF.Js"></script>
</table>
</body>
</html>
<span id="naruco_ad_body" style="display:none;">
<script language=javascript src=/adfile/top.js></script>
</span>
<script type="text/javascript">
var naruco_ad = document.getElementById('naruco_ad');
if (naruco_ad != null) {
naruco_ad.innerHTML=naruco_ad_body.innerHTML;
naruco_ad_body.innerHTML="";
}
</script>