|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
给你的建议是,有些最常用的语句是需要记住的 比如if for while这些、其他的一般语句你只要知道有这个函数或者有这个功能就可以了,当你用的时候你可以凭借记忆搜索就可以了。剧本|上传 译者注:本文的原名是《Creating a Multi-File Upload Script in PHP》。我个个感觉这文章写得普通,代码也不长短常专业,然而它对照短,并且一工夫也找不到好一点的文章,就把这个译过去了。其实PHP手册里也有一节是说多文件上传的,人人可以对照对照。文章内有的字句译出来不太顺眼,所以依照原意作了必定量的修正。自己程度无限,还望列位高手多指导。
导言
作为一个PHP的法式员,我曾碰到过这么一个客户,他需求一个可以同时上传多个文件的表单。因而,一天夜里我就用了一个小时的工夫,找到了最好最复杂的办法来完成这个请求。在这篇教程里,“for”这个轮回语句,将会成为中心代码。
剧本1:让用户设定需求上传的文件数量
uploadForm1.php
<html>
<head>
<title>文件上传</title>
</head>
<body>
<form name="form1" method="post" action="uploadForm2.php">
<p>请输出你要同时上传的文件的数量,最大值是9</p>
<p>
<input name="uploadNeed" type="text" id="uploadNeed" maxlength="1">
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
</body>
</html>
下面的HTML代码十分复杂。在这段代码里,我把uploadNeed这个组件的maxlength属性设为1,那末用户所能输出的最大值就是9了。固然,你可以依据需求自行修正这部分。
剧本2:创立静态表单
好了,做好上面的这个页面今后,咱们就完玉成部任务的一半了。咱们用for轮回语句来完成这个义务。
uploadForm2.php
<html>
<head>
<title>文件上传</title>
</head>
<body>
<form name="form1" enctype="multipart/form-data" method="post" action="processFiles.php">
<?php
// 创立静态表单
$uploadNeed = $_POST['uploadNeed'];
for($x=0;$x<$uploadNeed;$x++){
?>
<input name="uploadFile<?php echo $x;?>" type="file" id="uploadFile<?php echo $x;?>">
<?php
// 完成轮回
}
?>
<input name="uploadNeed" type="hidden" value="<?php echo $uploadNeed;?>">
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
在这个页面里,我只是创立了一个带有“type”属性的HTML表单。在表单两头,我拔出了一段PHP代码来完成轮回。我把$x设为0而且把轮回次数设为所需求的值$uploadNeed(就是方才用户提交的谁人值)。我还把$uploadNeed的值输入到hidden域里,以便它能传递到最初的一个页面。
作这些任务的目标是为了把$x这个变量的值,加在“name”属性的值“uploadFile”的前面。如许每一个“name”属性的值“uploadFile”的前面城市有一个分歧的数字来区分第一个文件。
如今就来完成上传文件的最初一步 processFiles.php
<?php
$uploadNeed = $_POST['uploadNeed'];
// 入手下手轮回
for($x=0;$x<$uploadNeed;$x++){
$file_name = $_FILES['uploadFile'. $x]['name'];
// 去除文件名中的特别字符
$file_name = stripslashes($file_name);
$file_name = str_replace("'","",$file_name);
$copy = copy($_FILES['uploadFile'. $x]['tmp_name'],$file_name);
// 反省是不是复制胜利
if($copy){
echo "$file_name 上传胜利<br />";
}else{
echo "$file_name 上传掉败<br />";
}
} // 停止轮回
?>
在这个剧本里,咱们起首要从uploadForm2.php中获得$uploadNeed这个变量。和前页谁人页面一样,咱们用“for”语句来还创立轮回。分歧的时,咱们需求在轮回内利用预界说全局变量$_FILES,我把它传递给了$file_name这个变量。
下一步,咱们挪用了stripslashes和str_replace两个函数来处置。因为文件名内能够包括一些特别字符,所以咱们利用stripslashes函数来避免上传时呈现注释毛病。
注重我是若何添加$x这个变量的,在$_FILES里$x会酿成数字。如许法式就会晓得得处置哪一个文件了。
当咱们利用copy函数时,才真实的入手下手把上传的文件复制到指定今朝内。最初还加上了一段复杂的代码来判别复制是不是胜利,并把了局输入到屏幕上。
停止语
我一定这个小小的剧本会使你一次上传多个文件的任务变得更便利。你可以依据以下的提醒,在这个剧本内到场相干的代码来完美它。
- 把文件名保留在MySQL数据库中
- 获得文件的巨细并保留到数据库中
- 创立一个一时文件保留上传掉败的文件的文件名,并在法式履行完今后再试测验考试
- 添加批量删除文件的功效
学习如何将PHP与HTML结合起来完成简单动态页面 |
|