加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP文件上传之多文件上传的达成思路

发布时间:2022-06-13 16:50:13 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP文件上传之多文件上传的实现思路的相关资料,需要的朋友可以参考下。 多文件上传的两种情况 ①使用多个name值 input type=file name=file1 input type=file name=file2 input type=file name=file3 input type=file name=file4 a.点击提
  这篇文章主要介绍了PHP文件上传之多文件上传的实现思路的相关资料,需要的朋友可以参考下。
 
  多文件上传的两种情况
 
  ①使用多个name值
 
  <input type="file" name="file1">
  <input type="file" name="file2">
  <input type="file" name="file3">
  <input type="file" name="file4">
  a.点击提交之后接收到的数据格式
 
   [tmp_name] => G:wamptmpphp739.tmp
  [error] => 0
  [size] => 3143
  )
  [file4] => Array
  (
  [name] => 54c0573dncb4db6f7.jpg
  [type] => image/jpeg
  [tmp_name] => G:wamptmpphp788.tmp
  [error] => 0
  [size] => 5404
  )
  )
  从这种格式可以看出来,每一个文件对应一个数组单元
 
  所以使用foreach遍历数组,并对每个数组单元进行文件上传函数调用
 
  b.点击提交后的操作
 
  ①接收上传的文件信息
 
  $file = $_FILES;
 
  ②引入上传函数
 
  include('./functions.php');
 
  ③设置文件保存路径
 
  $path = './uploads/'; // 此目录需要手动创建
 
  ④调用文件上传函数
 
  foreach($file as $v){
  $info = uploadFile($v,$path);
  ⑤判断上传状态
 
  if($info['isok']){
  echo '上传成功'.$info['message'];
  } else {
  echo '上传失败'.$info['message'];
  }
  }
  ②使用单个name值
 
  a.第一种写法
 
  <input type='file' name="file[]">
  <input type='file' name="file[]">
  <input type='file' name="file[]">
  b.第二种写法
 
  <input type="file" name="file[]" multiple>
 
  c.点击提交之后,接收到的数据格式
 
  Array
  (
  [userpic] => Array
  (
  [name] => Array
  (
  [0] => 8.png
  [1] => 9b2d7581fba543ec9bcf95e91018915a.gif
   [0] => 200
  [1] => 16503
  [2] => 19443
  )
  )
  )
  从这种格式可以看出来,是将上传的文件信息分开保存到每个下标中。
 
  所以要做的事情就是拼接出来一个完整的文件信息,一个一维数组。
 
  Array(
  [name] => 54c0573dncb4db6f7.jpg
  [type] => image/jpeg
  [tmp_name] => G:wamptmpphp788.tmp
  [error] => 0
  [size] => 5404
  )
  所以要进行的操作,是遍历$_FILES['file'] 然后从中取出每条上传文件的信息
 
  d.点击提交后的操作
 
  ①接收上传的文件信息
 
  $file = $_FILES['file'];
 
  ②引入上传函数
 
  include('./functions.php');
 
  ③设置文件保存路径
 
  $path = './uploads/'; // 此目录需要手动创建
 
  ④调用文件上传函数
 
  foreach($file['name'] as $key=>$value){
  $data['name'] = $file['name'][$key];
  $data['type'] = $file['type'][$key];
  $data['tmp_name'] = $file['tmp_name'][$key];
  $data['error'] = $file['error'][$key];
  $data['size'] = $file['size'][$key];
  $info = uploadFile($data,$path);
  ⑤判断上传状态
 
  if($info['isok']){
  echo '上传成功'.$info['message'];
  } else {
  echo '上传失败'.$info['message'];
  }
  }
  a.遍历$file['name'] 只是为了获取$key
 
  b.每遍历一次,取出相对应下标的文件信息,赋值给一个新数组中对应的键
 
  如第一次 $key = 0;
 
  $data['name'] = $file['name'][0]; // 相当于取出了第一个文件的名字
 
  $data['type'] = $file['type'][0]; // 相当于取出了第一个文件的类型
 
  ...
 
  第一次遍历完成之后
 
  $data = array(
  [name] => 54c0573dncb4db6f7.jpg
  [type] => image/jpeg
  [tmp_name] => G:wamptmpphp788.tmp
  [error] => 0
  [size] => 5404
  );
  这样就取出了第一个文件的所有信息
 
  然后调用上传函数,进行文件上传处理
 
  第二次遍历时$key=1,相当于获取第二个上传文件的信息

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读