PHP实现文件上传下载之多文件... 登录

PHP实现文件上传下载之多文件上传

利用单文件封装

表单页面:

index4.php

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> 
<meta name="format-detection" content="telephone=no" /> 
<meta charset="utf-8" />
<title>多文件上传</title>
</head>
<body>
<form action="upload4.php" method="post" enctype="multipart/form-data">
请选择您要上传的文件:<input type="file" name="myFile1" /><br/>
请选择您要上传的文件:<input type="file" name="myFile2" /><br/>
请选择您要上传的文件:<input type="file" name="myFile3" /><br/>
请选择您要上传的文件:<input type="file" name="myFile4" /><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>

上传处理程序

upload4.php

<?php
//echo "<pre>";
//print_r($_FILES);
//echo "</pre>";
//exit;
header('content-type:text/html;charset=utf-8');
include_once 'fun_upload.php';
foreach ($_FILES as $fileInfo){	
$file[]=uploadFile($fileInfo);
}

将$_FILES打印出来,打印出来看到是个二维数组,很简单,遍历去用就好了!

QQ截图20161102162412.png

封装好的上传函数需要修改一下,给一些默认值

function uploadFile($fileInfo,$path="uploads",$allowExt=array('jpeg','jpg','png','tif'),$maxSize=10485760){

代码如下:

fun_upload.php

<?php
function uploadFile( $fileInfo,$path="uploads",$allowExt=array('jpeg','jpg','png','tif'),$maxSize=10485760
){
$filename=$fileInfo["name"];
$tmp_name=$fileInfo["tmp_name"];
$size=$fileInfo["size"];
$error=$fileInfo["error"];
$type=$fileInfo["type"];
 
//服务器端设定限制
 
$ext=pathinfo($filename,PATHINFO_EXTENSION);
 
//目的信息
if (!file_exists($path)) {  
  mkdir($path,0777,true);
  chmod($path, 0777);
}
$uniName=md5(uniqid(microtime(true),true)).'.'.$ext;
$destination=$path."/".$uniName;
if ($error==0) {
  if ($size>$maxSize) {
    exit("上传文件过大!");
  }
  if (!in_array($ext, $allowExt)) {
    exit("非法文件类型");
  }
  if (!is_uploaded_file($tmp_name)) {
    exit("上传方式有误,请使用post方式");
  }
  //判断是否为真实图片(防止伪装成图片的病毒一类的
  if (!getimagesize($tmp_name)) {//getimagesize真实返回数组,否则返回false
    exit("不是真正的图片类型");
  }
  if (@move_uploaded_file($tmp_name, $destination)) {//@错误抑制符,不让用户看到警告
    echo "文件".$filename."上传成功!";
  }else{
    echo "文件".$filename."上传失败!";
  }
}else{
  switch ($error){
    case 1:
      echo "超过了上传文件的最大值,请上传2M以下文件";
      break;
    case 2:
      echo "上传文件过多,请一次上传20个及以下文件!";
      break;
    case 3:
      echo "文件并未完全上传,请再次尝试!";
      break;
    case 4:
      echo "未选择上传文件!";
      break;
    case 7:
      echo "没有临时文件夹";
      break;
  }
}
return $destination;
}

这样我们就能实现一个简单的多文件上传了

下一节
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="format-detection" content="telephone=no" /> <meta charset="utf-8" /> <title>多文件上传</title> </head> <body> <form action="upload4.php" method="post" enctype="multipart/form-data"> 请选择您要上传的文件:<input type="file" name="myFile1" /><br/> 请选择您要上传的文件:<input type="file" name="myFile2" /><br/> 请选择您要上传的文件:<input type="file" name="myFile3" /><br/> 请选择您要上传的文件:<input type="file" name="myFile4" /><br/> <input type="submit" value="上传"/> </form> </body> </html>
提交 重置代码
章节 评论 笔记 课件
  • 取消 回复 发送
  • 取消 发布笔记 发送