仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1659|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之上传多个文件的PHP剧本

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:29:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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结合起来完成简单动态页面
金色的骷髅 该用户已被删除
沙发
发表于 2015-2-4 13:13:15 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
柔情似水 该用户已被删除
板凳
发表于 2015-2-5 06:54:07 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
老尸 该用户已被删除
地板
发表于 2015-2-11 01:17:11 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
海妖 该用户已被删除
5#
发表于 2015-2-26 11:09:02 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
不帅 该用户已被删除
6#
发表于 2015-3-8 15:40:11 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
变相怪杰 该用户已被删除
7#
发表于 2015-3-9 14:25:26 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
飘灵儿 该用户已被删除
8#
发表于 2015-3-16 23:29:15 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
蒙在股里 该用户已被删除
9#
发表于 2015-3-20 13:34:14 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
灵魂腐蚀 该用户已被删除
10#
发表于 2015-3-25 01:30:19 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
分手快乐 该用户已被删除
11#
发表于 2015-3-28 12:19:15 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
精灵巫婆 该用户已被删除
12#
发表于 2015-4-1 10:10:06 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
透明 该用户已被删除
13#
发表于 2015-4-3 23:25:16 | 只看该作者
当然这种网站的会员费就几十块钱。
因胸联盟 该用户已被删除
14#
发表于 2015-4-4 19:30:48 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
兰色精灵 该用户已被删除
15#
发表于 2015-4-6 19:07:54 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
爱飞 该用户已被删除
16#
发表于 2015-4-14 13:07:07 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
深爱那片海 该用户已被删除
17#
发表于 2015-4-20 15:15:13 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
小魔女 该用户已被删除
18#
发表于 2015-5-1 08:10:46 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
再见西城 该用户已被删除
19#
发表于 2015-5-12 14:40:50 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
冷月葬花魂 该用户已被删除
20#
发表于 2015-6-7 09:12:02 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 13:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表