返回介绍

9.5 多文件上传

发布于 2025-01-30 22:11:35 字数 2229 浏览 0 评论 0 收藏 0

介绍了 PHP 上传单个文件的过程。但是有些时候,为了使用方便,我们需要满足同时上传多个文件的需求。多文件上传原理相同,不过在处理数据时,需要对上传数据进行特殊处理。

<html> 
<head> 
  <meta charset="utf-8" /> 
  <title>单文件上传</title> 
</head> 
<body> 
  <form action="morefile.php" method="post" enctype="multipart/form-data"> 
   <input type="file" name="file[]"> 
   <input type="file" name="file[]"> 
   <input type="submit" value="上传"> 
 </form> 
</body> 
</html> 

这里是一个简易的上传页面,form 表单同时提交了两个文件。我们 可以通过这个页面提交内容。

注意:

  1. input type="file" name="file[]"与之前相比 file 后多加了一个中括号

  2. 写了 2 个或者多个 input type="file" name="file[]"
    我们使用 $_FILES 来接收文件信息,打印并查看数组:
<?php 
var_dump($_FILES); //打印$_FILES 查看数组结构 
?> 

数组结构如下

array (size=1)  
'file' =>  
  array (size=5) 
'name' =>  
  array (size=2) 
  //文件名 
  0 => string 'psu.jpg' (length=7) 
  1 => string 'qwe.jpg' (length=7) 
//文件 mime 类型 
'type' => array (size=2) 
    0 => string 'image/jpeg' (length=10) 
    1 => string 'image/jpeg' (length=10) 
//缓存文件 
'tmp_name' =>  
  array (size=2) 
    0 => string 'E:\wamp\tmp\phpF6D5.tmp' (length=23) 
    1 => string 'E:\wamp\tmp\phpF6F5.tmp' (length=23) 
//文件错误信息 
'error' =>  
  array (size=2) 
    0 => int 0 
    1 => int 0 
//文件大小 
'size' =>  
  array (size=2) 
  0 => int 225824  
  1 => int 151651 

我们可以看到,两个文件被存储在一个数组中,键名和上传单文件是相同。所以,需要我们用 for() 循环,来分别取出两个文件的需要用到的数据。

在$_FILES 中同时保存了两个文件的数据,我们需要使用一个简单的循环,来读取单个文件的信息,并将文件移动到我们想要放的位置。

for ($i=0; $i < count($_FILE['file']['name']); $i++) {  

/* 
用 is_uploaded_file() 函数判断是上传文件 
并且没有出现错 
*/ 

if(is_uploaded_file($_FILEs['file']['tmp_name'][$i]) && $_FILEs['file']['error'][$i] == 0){  
  if(move_uploaded_file($_FILEs['file']['tmp_name'][$i],'upload/'.$_FILE['file']['name'][$i])){
//用 move_uploaded_file() 函数移动文件到指定的位置并使用文件原名 
echo "上传成功"; 

  }else{ 

    echo '上传失败'; 

  } 

}else{ 

  echo '上传失败'; 

} 

} 

详细的判断过程,参见单文件上传,这里只做了基本的判断,并没有对文件的大小及格式提醒。
请按照业务,自行判断文件大小及格式进行错误提醒。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文