博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 多个文件上传
阅读量:5129 次
发布时间:2019-06-13

本文共 2476 字,大约阅读时间需要 8 分钟。

关键函数:

is_uploaded_file():用于判断指定的文件是否是通过 HTTP POST 上传的,如果是则返回 TRUE。用于防止潜在的攻击者对原本不能通过脚本交互的文件进行非法管理,这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件。

move_uploaded_file():文件上传后,首先会存储在服务器的临时目录中,可以是该函数将上传的文件移动到新位置。与 copy() 和 move() 相比,该函数还有一种额外的功能,检查并确保由第一个参数 filename 指定的文件,是否是合法的上传文件( 即通过 PHP 的 HTTP POST 上传机制所上传的 )。如果文件合法,则将其移动为由第二个参数 destination 指定的文件。如果 filename 不是合法的上传文件,不会出现任何操作,将返回 FALSE。如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,也将返回FALSE。此外还将发出一条警告。若成功则返回TRUE。

其他函数:

array_pop():弹出并返回数组中的最后一个元素,并将 array 的长度减1。案例中用于取出文件后缀。

list():用数组中的元素为一组变量赋值。

 

多个文件上传只需要在单个文件上传的基础上,在原来的二维数组 $_FILES 之外进行一次循环。

 

HTML:

文件上传
选择文件1:
选择文件2:
选择文件3:
 

 图1

图2

uoload.php:

0){ echo "上传错误"; switch($_FILES['myfile']['error'][$i]){ case 1: die('第'.($i+1).'个文件上传文件大小超出了PHP配置文件中的约定值:upload_max_filesize'); case 2: die('上传第'.($i+1).'个文件大小超出了表单中的约定值:MAX_FILE_SIZE'); case 3: die('第'.($i+1).'个文件只被部分上传'); case 4: die('第'.($i+1).'个文件没有上传'); default: die('未知错误'); } } //判断上传的文件是否为允许的文件类型,通过文件的后缀名 //array_pop 弹出并返回数组中的最后一个元素,并将array的长度减1 $hz[$i] = array_pop(explode(".",$_FILES['myfile']['name'][$i])); if(!in_array($hz[$i],$allowtype)){ die("第".($i+1)."个文件后缀是{
$hz}
,不是允许的文件类型!"); } /*也可通过获取上传文件的MIME类型中的主类型和子类型,来限制文件上传的类型 list($maintype,$subtype) = explode("/",$_FILES['myfile']['type']); if($maintype == "text"){ die("不能上传文本文件"); } */ //判断上传的文件是否允许大小 if($_FILES['myfile']['size'][$i]>$size){ die("第".($i+1)."个文件超过了允许的{
$size}
"); } //为了系统安全,同时也为了同名文件不被覆盖,上传后将文件名使用系统定义 $filename[$i] = date("YmdHis").rand(100,999).".".$hz[$i]; //判断是否为上传文件 if(is_uploaded_file($_FILES['myfile']['tmp_name'][$i])){ if(!move_uploaded_file($_FILES['myfile']['tmp_name'][$i],$path.'/'.$filename[$i])){ die("不能将文件移动到指定目录"); } }else{ die("上传文件{
$_FILES['myfile']['name'][$i]}不是一个合法文件"); } //如果文件上传成功 $filesize[$i] = $_FILES['myfile']['size'][$i]/1024; echo "文件{
$upfile[$i]}上传成功,保存在目录{
$path}中,文件大小为{
$filesize[$i]}KB
";}

页面显示:

文件87d11a09d24848fa3ac763fe.jpg上传成功,保存在目录./uploads中,文件大小为34.60546875KB

文件0ef5e0fef0adab0f5c6008a2.jpg上传成功,保存在目录./uploads中,文件大小为37.810546875KB
文件2dbda88c96801dd6f11f3617.jpg上传成功,保存在目录./uploads中,文件大小为168.0478515625KB

转载于:https://www.cnblogs.com/dee0912/p/4072530.html

你可能感兴趣的文章
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
[LeetCode] Palindrome Number
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
SQL更新某列包含XX的所有值
查看>>
网易味央第二座猪场落户江西 面积超过3300亩
查看>>
面试时被问到的问题
查看>>
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Bootstrap
查看>>
Node.js 连接 MySQL
查看>>
ACM-ICPC 2018 world final A题 Catch the Plane
查看>>
那些年,那些书
查看>>
面向对象六大基本原则的理解
查看>>
注解小结
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>