当前位置:首页 > PHP教程 > php上传下载 > 列表

php轻松实现文件上传功能

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-12 22:38:59 浏览: 评论:0 

这篇文章主要介绍了php轻松实现文件上传功能的全部代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

本文分为五个部分针对php上传文件进行分析讲解,具体内容如下

文件上传变量

将服务器上的临时文件移动到指定目录下

php.ini上传相关配置

error错误号

单文件上传实例

1.文件上传变量

  1. //$_FILES:文件上传变量 
  2.  #name 文件的名称 
  3.  #type 文件的类型 
  4.  #tmp_name 临时文件名 
  5.  #size 文件的大小 
  6.  #error 错误信息 
  7.  
  8. $filename = $_FILES["myFile"]["name"]; 
  9. $type = $_FILES["myFile"]["type"]; 
  10. $tmp_name = $_FILES["myFile"]["tmp_name"]; 
  11. $size = $_FILES["myFile"]["size"]; 
  12. $error = $_FILES["myFile"]["error"];  

2.将服务器上的临时文件移动到指定目录下

  1. //1.move_uploaded_file($tmp_name,$destination):将服务器上的临时文件移动到指定目录下 
  2.  #上传后文件名字,移动成功返回true,否则返回false 
  3. move_uploaded_file($tmp_name,"D:/".$filename); 
  4.  
  5. //2.copy($tmp_name,$destination) 
  6. copy($tmp_name,"D:/".$filename); 

3.php.ini上传相关配置

  1. # file_uploads=On 支持HTTP上传 
  2.  # upload_tmp_dir="" 临时文件保存的目录 
  3.  # upload_max_filesize=2M 允许上传文件的最大值 
  4.  # max_file_uploads=20 允许一次上传的最大文件数 
  5.  # post_max_size=8M post方式发送数据的最大值 
  6.  
  7.  # max_execution_time = 1 设置了脚本被解析器终止之前允许的最大执行时间,单位为秒,防止程序写的不好而占尽服务器资源 
  8.  # max_input_time = 60 脚本解析输入数据允许的最大时间,单位为秒 
  9.  # max_input_nesting_level = 64 设置输入变量的嵌套深度 
  10.  # max_input_vars = 1000 接受多少输入的变量 
  11.  # memory_limit = 128M 最大单线程的独立内存使用量 

4.error错误号

# 0,没有错误发生,文件上传成功。

# 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

# 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。

# 3,文件只有部分被上传。

# 4,没有文件被上传。

# 6,找不到临时文件夹。

# 7,文件写入失败。

# 8,上传的文件被PHP扩展程序中断

5.单文件上传实例

form.html

  1. <!doctype html> 
  2. <html lang="en"
  3. <head> 
  4.  <meta charset="UTF-8"
  5.  <title>Document</title> 
  6. </head> 
  7. <body> 
  8. <form action="fileUpload.php" method="post" enctype="multipart/form-data"
  9.  请选择你要上传的文件: 
  10.  <input type="file" name="myFile"><br> 
  11.  <input type="submit" value="上传文件"
  12.  
  13.  <!--限制客户端上传文件的最大值 隐藏域另起一行--> 
  14.  <!--<input type="hidden" name="MAX_FILE_SIZE" value="字节数">--> 
  15.  
  16.  <!--accept设置上传文件的类型--> 
  17.  <!--<input type="file" name="myfile" accept="image/jpg,image/png,image/gif">--> 
  18. </form> 
  19. </body> 
  20. </html> 

fileUpload.php

  1. header("content-type:text/html;charset:utf-8"); 
  2. $fileInfo = $_FILES["myFile"]; 
  3.  
  4. $filename = $fileInfo["name"]; 
  5. $type = $fileInfo["type"]; 
  6. $error = $fileInfo["error"]; 
  7. $size = $fileInfo["size"]; 
  8. $tmp_name = $fileInfo["tmp_name"]; 
  9. $maxSize=2*1024*1024;//允许的最大值 
  10. $allowExt=array("jpeg","jpg","gif"); 
  11. $flag = true;//检测是否为真实的图片类型 
  12.  
  13. //判断错误号 
  14. if($error == 0){ 
  15.  //判断上传文件的大小 
  16.  if($size>$maxSize){ 
  17.  exit("上传文件过大"); 
  18.  } 
  19.    
  20.  //检测文件类型 
  21.  //取出文件扩展名 
  22.  $ext = pathinfo($filename,PATHINFO_EXTENSION); 
  23.  if(!in_array($ext,$allowExt)){ 
  24.  exit("非法文件类型"); 
  25.  } 
  26.  
  27.  //检测是否为真实的图片类型 
  28.  if($flag){ 
  29.  if(@!getimagesize($tmp_name)){ 
  30.   exit("不是正的图片类型"); 
  31.  } 
  32.  } 
  33.  
  34.  //创建目录 
  35.  $path = "D:/test/"
  36.  if(!file_exists($path)){ 
  37.  mkdir($path,0777,true); 
  38.  chmod($path,0777); 
  39.  } 
  40.  
  41.  //确保文件名唯一,防止重名覆盖 
  42.  $uniName = md5(uniqid(microtime(true),true)).".".$ext
  43.  $destination = $path.$uniName
  44.  if(@move_uploaded_file($tmp_name,$destination)){ 
  45.  echo "上传成功"
  46.  }else
  47.  echo "上传失败"
  48.  } 
  49. }else
  50.  switch($error){ 
  51.  case 1: 
  52.  case 2: 
  53.  case 3: 
  54.  case 4: 
  55.  case 6: 
  56.  case 7: 
  57.  case 8: 
  58.   echo "上传错误"
  59.   break
  60.  } 

希望本文所述对大家学习php程序设计有所帮助。

Tags: php文件上传

分享到: