频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发设计技术教程 -> PHP教程 -> 让你同时上传 1000 个文件

让你同时上传 1000 个文件

作者:佚名  来源:转载  发布时间:2005-7-18 17:40:17  发布人:acx

减小字体 增大字体

预备知识:Java&#115cript, 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
由于页面的生成非常简单,所以就不在此多解释了,用 java&#115cript 定义了两个函数,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>

<&#115cript LANGUAGE="java&#115cript"&gt; <br>function check()&#123; <br>document.frm1.submit(); <br>document.body.innerHTML="Uploading Please wait!"; <br>&#125; <br><br>var i=0; <br>function create()&#123; <br>var sfrm = document.frm1.innerHTML; <br>var icnt = cnt.value; <br>for(j=0;j&lt;icnt;j++) <br>&#123; <br>sfrm = sfrm + "请选择文件 "+i+" &lt;input type=file name='file"+i+"' class=ist&gt;"; <br>sfrm = sfrm + "&nbsp;路径:&lt;input type=text name='path"+i+"' value='../www/test/tmp/' class=ist&gt;"; <br>sfrm = sfrm + "&lt;br&gt;"; <br>i++; <br>&#125; <br>document.frm1.innerHTML = sfrm; <br>document.frm1.cnt.value=i; <br>&#125; <br><br>&lt;/&#115cript&gt; </P> <P>&lt;/head&gt; <br>&lt;body class=lbtn onload="document.frm1.cnt.value=cnt.value;"&gt; <br>请输入要上传文件的数量: &lt;input type=text name=cnt value="10" class=ist onchange="document.frm1.cnt.value=this.value;"&gt; <br>&lt;input type=button name=bt1 value="生成上传文件框" onclick="create();" class=lbtn&gt; <br>&lt;input type=button name=bt1 value="上传" onclick="check();" class=lbtn&gt; <br>&lt;input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn&gt; <br><br>&lt;form name=frm1 method="post" Enctype="multipart/form-data" action="../../cgi-bin/fileup.php"&gt; <br>&lt;input type=hidden name=cnt value="20" class=ist&gt; <br>&lt;/form&gt; <br><br>&lt;input type=button name=bt1 value="上传" onclick="check();" class=lbtn&gt; <br>&lt;input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn&gt; <br>&lt;/body&gt; <br>&lt;/html&gt; <br>文件提交页面既已生成,下面任务就很明确了:将提交的文件内容保存到服务器上。 </P> <P></P> <P>下面我们用两种方法来实现这个功能: </P> <P>1. 用 PHP 来保存: <br>我们先定义一个文件保存函数 fup() 它有两个参数: <br>&#36;filename: 文件内容 <br>&#36;fname: 文件名(包含路径) <br>剩下的就是写一个循环将文件依次写入服务器。这里要简单说明一下: <br>PHP 对于上传文件的处理是这样的:如果提交的文件框我为 file0, 那么提交给 PHP 的文件内容保存在变量 &#36;file0 中,而文件名则保存在 &#36;file0_name 中。这样在这个循环中我要做的就是将提交页面提交的内容分解出来,实现过程请看下面的代码。 </P> <P>fileup.php <br>---------------------------------------------------------------------- <br>&lt;? <br>function fup(&#36;filename,&#36;fname) <br>&#123; If(&#36;filename != "none") &#123; <br>copy(&#36;filename,&#36;fname); <br>unlink(&#36;filename); <br>&#125; <br>&#125; </P> <P>for(&#36;i=0;&#36;i&lt;&#36;cnt;&#36;i++) <br>&#123; <br>&#36;ffnn="file".&#36;i; <br>&#36;ffnnname=&#36;ffnn."_name"; <br>&#36;ffpath="path".&#36;i; <br><br>//print &#36;&#36;ffnn; <br>print &#36;&#36;ffnnname; <br>print "&lt;br&gt;"; <br><br>fup(&#36;&#36;ffnn,&#36;&#36;ffpath.&#36;&#36;ffnnname); //"../www/test/tmp/" <br>&#125; <br>?&gt; <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 (&#36;ENV&#123;'CONTENT_TYPE'&#125; !~ /multipart/form-data/) &#123; <br>print "Cache-Control: no-cachenPragma: no-cachen" . <br>"Content-Type: text/htmlnn" . <br>"&lt;html&gt;&lt;body&gt;Your web browser cannot upload files. Sorry.&lt;/body&gt;&lt;/html&gt;"; <br>exit 0; <br>&#125; </P> <P><br>&#36;cntfile=param('cnt'); <br>print header; <br>print start_html; <br>#print "Receiving Please wait...."; </P> <P>&amp;g_head; </P> <P>#&#36;writed = '../www/test/tmp/'; </P> <P>for (&#36;i=0;&#36;i&lt;&#36;cntfile;&#36;i++)&#123; <br>&#36;paramfile = 'file'.&#36;i; <br>&#36;parampath='path'.&#36;i; <br><br>&#36;writed=param(&#36;parampath); </P> <P>&amp;upfile; <br>&amp;g_body; <br>&#125; </P> <P>&amp;g_bott; </P> <P>#&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;以下为自定义过程&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; </P> <P>sub upfile <br>&#123; <br>&#36;maxdata = 512000; <br># &#36;writed = '../www/test/tmp/'; </P> <P><br>&#36;strRFname=reverse &#36;xfile; <br>&#36;intIndex=index(&#36;strRFname,'\'); <br>&#36;strNetFname=substr(&#36;strRFname,0,&#36;intIndex); <br>&#36;strNetFname=scalar reverse &#36;strNetFname; <br><br><br>if((stat &#36;xfile)[7]&gt;&#36;maxdata)&#123; <br>print "Status: 411 Size Not Allowedn" . <br>"Content-Type: text/htmlnAllow: POSTnn" . <br>"&lt;html&gt;&lt;head&gt;&lt;title&gt;411 411 Size Not Allowed&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt; You got big problem. Try again.&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;n"; <br>exit 0; <br>&#125; <br><br><br>binmode &#36;xfile; <br>use File::Copy; <br>copy(&#36;xfile,&#36;writed.&#36;strNetFname); <br>&#125; </P> <P>sub g_head&#123; <br>print '&lt;table border=1 align=center&gt;'; <br>print '&lt;tr&gt;&lt;td colspan=3 align=center&gt;文件上传结果(Upload Result)&lt;/td&gt;&lt;/tr&gt;'; <br>print '&lt;tr align=center&gt;'; <br>print ' &lt;td&gt;SourceFile:&lt;/td&gt;'; <br>print ' &lt;td&gt;DestFile:&lt;/td&gt;'; <br>print ' &lt;td&gt;Upload&lt;/td&gt;'; <br>print '&lt;/tr&gt;'; <br>&#125; </P> <P>sub g_body&#123; <br>print '&lt;tr&gt;'; <br>print ' &lt;td&gt;'.&#36;xfile .'&lt;/td&gt;'; <br>print ' &lt;td&gt;'.&#36;writed.&#36;strNetFname.'&lt;/td&gt;'; <br>print ' &lt;td&gt;OK!&lt;/td&gt;'; <br>print '&lt;/tr&gt;'; <br>&#125; </P> <P>sub g_bott&#123; <br>print '&lt;/table&gt;'; <br>&#125; <br>---------------------------------------------------------------------- <br>如有好的建议请 Email: gearsoft@netease.com </P> <P>&nbsp;</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>