<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[Php上传]上传多个文件的PHP脚本]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 26 Sep 2006 05:44:48 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	译者注：本文的原名是《Creating a Multi-File Upload Script in PHP》。我个个觉得这文章写得一般，代码也不是非常专业，但是它比较短，而且一时间也找不到好一点的文章，就把这个译过来了。其实PHP手册里也有一节是说多文件上传的，大家可以对比对比。文章内有的字句译出来不太顺眼，所以按照原意作了一定量的修改。本人水平有限，还望各位高手多指点。<br/><br/>导言<br/><br/>　　作为一个PHP的程序员，我曾遇到过这么一个客户，他需要一个可以同时上传多个文件的表单。因此，一天夜里我就用了一个小时的时间，找到了最好最简单的方法来完成这个要求。在这篇教程里，“for”这个循环语句，将会成为核心代码。<br/><br/>脚本1：让用户设定需要上传的文件数目<br/><br/>uploadForm1.php<br/><br/><html><br/><head><br/><title>文件上传</title><br/></head><br/><body><br/><form name="form1" method="post" action="uploadForm2.php"><br/><p>请输入你要同时上传的文件的数目，最大值是9</p><br/><p><br/><input name="uploadNeed" type="text" id="uploadNeed" maxlength="1"><br/></p><br/><p><br/><input type="submit" name="Submit" value="Submit"><br/></p><br/></form><br/></body><br/></html><br/><br/>　　上面的HTML代码非常简单。在这段代码里，我把uploadNeed这个组件的maxlength属性设为1，那么用户所能输入的最大值就是9了。当然，你可以根据需要自行修改这部份。<br/><br/>脚本2:创建动态表单<br/><br/>　　好了，做好下面的这个页面以后，我们就完成全部工作的一半了。我们用for循环语句来完成这个任务。<br/><br/>uploadForm2.php<br/><br/><html><br/><head><br/><title>文件上传</title><br/></head><br/><body><br/><form name="form1" enctype="multipart/form-data" method="post" action="processFiles.php"><br/><?php<br/>// 创建动态表单<br/>$uploadNeed = $_POST['uploadNeed'];<br/>for($x=0;$x<$uploadNeed;$x++)&#123;<br/>?><br/><input name="uploadFile<?php echo $x;?>" type="file" id="uploadFile<?php echo $x;?>"><br/><?php<br/>// 完成循环<br/>&#125;<br/>?><br/><input name="uploadNeed" type="hidden" value="<?php echo $uploadNeed;?>"><br/><input type="submit" name="Submit" value="Submit"><br/></form><br/></body><br/></html><br/><br/>　　在这个页面里，我只是创建了一个带有“type”属性的HTML表单。在表单中间，我插入了一段PHP代码来完成循环。我把$x设为0并且把循环次数设为所需要的值$uploadNeed（就是刚才用户提交的那个值）。我还把$uploadNeed的值输出到hidden域里，以便它能传递到最后的一个页面。<br/><br/>　　作这些工作的目的是为了把$x这个变量的值，加在“name”属性的值“uploadFile”的后面。这样每个“name”属性的值“uploadFile”的后面都会有一个不同的数字来区别第一个文件。<br/><br/>脚本3：处理上传文件<br/><br/>现在就来完成上传文件的最后一步<br/><br/>processFiles.php<br/><br/><?php<br/>$uploadNeed = $_POST['uploadNeed'];<br/>// 开始循环<br/>for($x=0;$x<$uploadNeed;$x++)&#123;<br/>$file_name = $_FILES['uploadFile'. $x]['name'];<br/>// 去除文件名中的特殊字符<br/>$file_name = stripslashes($file_name);<br/>$file_name = str_replace("'","",$file_name);<br/>$copy = copy($_FILES['uploadFile'. $x]['tmp_name'],$file_name);<br/>// 检查是否复制成功<br/>if($copy)&#123;<br/>echo "$file_name 上传成功<br />";<br/>&#125;else&#123;<br/>echo "$file_name 上传失败<br />";<br/>&#125;<br/>&#125; // 结束循环<br/>?><br/><br/>　　在这个脚本里，我们首先要从uploadForm2.php中获取$uploadNeed这个变量。和前页那个页面一样，我们用“for”语句来还创建循环。不同的时，我们需要在循环内使用预定义全局变量$_FILES，我把它传递给了$file_name这个变量。<br/><br/>　　下一步，我们调用了stripslashes和str_replace两个函数来处理。由于文件名内可能包含一些特殊字符，所以我们使用stripslashes函数来防止上传时出现解释错误。<br/><br/>　　注意我是如何添加$x这个变量的，在$_FILES里$x会变成数字。这样程序就会知道得处理哪个文件了。<br/><br/>　　当我们使用copy函数时，才真正的开始把上传的文件复制到指定目前内。最后还加上了一段简单的代码来判断复制是否成功，并把结果输出到屏幕上。<br/><br/>结束语<br/><br/>　　我肯定这个小小的脚本会使你一次上传多个文件的工作变得更方便。你可以根据下列的提示，在这个脚本内加入相关的代码来完善它。<br/><br/>把文件名保存在MySQL数据库中<br/>获取文件的大小并保存到数据库中<br/>创建一个临时文件保存上传失败的文件的文件名，并在程序执行完以后再试尝试<br/>添加批量删除文件的功能
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [Php上传]上传多个文件的PHP脚本]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>