當前位置:首頁 > PHP教程 > php上傳下載 > 列表

php輕松實現文件上傳功能

發布:smiling 來源: PHP粉絲網  添加日期:2019-11-29 10:49:06 瀏覽: 評論:0 

本文分為五個部分針對php上傳文件進行分析講解,具體內容如下

文件上傳變量

將服務器上的臨時文件移動到指定目錄下

php.ini上傳相關配置

error錯誤號

單文件上傳實例

1.文件上傳變量

  1. //$_FILES:文件上傳變量 
  2.  
  3.  #name 文件的名稱 
  4.  
  5.  #type 文件的類型 
  6.  
  7.  #tmp_name 臨時文件名 
  8.  
  9.  #size 文件的大小 
  10.  
  11.  #error 錯誤信息 
  12. //phpfensi.com 
  13.  
  14. $filename = $_FILES["myFile"]["name"]; 
  15.  
  16. $type = $_FILES["myFile"]["type"]; 
  17.  
  18. $tmp_name = $_FILES["myFile"]["tmp_name"]; 
  19.  
  20. $size = $_FILES["myFile"]["size"]; 
  21.  
  22. $error = $_FILES["myFile"]["error"];  

2.將服務器上的臨時文件移動到指定目錄下

  1. //1.move_uploaded_file($tmp_name,$destination):將服務器上的臨時文件移動到指定目錄下 
  2.  
  3.  #上傳后文件名字,移動成功返回true,否則返回false 
  4.  
  5. move_uploaded_file($tmp_name,"D:/".$filename); 
  6.  
  7. //2.copy($tmp_name,$destination) 
  8.  
  9. copy($tmp_name,"D:/".$filename);  

3.php.ini上傳相關配置

  1. # file_uploads=On 支持HTTP上傳 
  2.  
  3.  # upload_tmp_dir="" 臨時文件保存的目錄 
  4.  
  5.  # upload_max_filesize=2M 允許上傳文件的最大值 
  6.  
  7.  # max_file_uploads=20 允許一次上傳的最大文件數 
  8.  
  9.  # post_max_size=8M post方式發送數據的最大值 
  10.  
  11.  # max_execution_time = 1 設置了腳本被解析器終止之前允許的最大執行時間,單位為秒,防止程序寫的不好而占盡服務器資源 
  12.  
  13.  # max_input_time = 60 腳本解析輸入數據允許的最大時間,單位為秒 
  14.  
  15.  # max_input_nesting_level = 64 設置輸入變量的嵌套深度 
  16.  
  17.  # max_input_vars = 1000 接受多少輸入的變量 
  18.  
  19.  # memory_limit = 128M 最大單線程的獨立內存使用量 

4.error錯誤號

  1. # 0,沒有錯誤發生,文件上傳成功。 
  2.  
  3. # 1,上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。 
  4.  
  5. # 2,上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。 
  6.  
  7. # 3,文件只有部分被上傳。 
  8.  
  9. # 4,沒有文件被上傳。 
  10.  
  11. # 6,找不到臨時文件夾。 
  12.  
  13. # 7,文件寫入失敗。 
  14.  
  15. # 8,上傳的文件被PHP擴展程序中斷 

5.單文件上傳實例

form.html

  1. <meta charset="UTF-8"> 
  2.  
  3.  <title>Document</title> 
  4.  
  5. <form action="fileUpload.php" method="post" enctype="multipart/form-data"> 
  6.  
  7.  請選擇你要上傳的文件: 
  8.  
  9.  <input type="file" name="myFile"><br> 
  10.  
  11.  <input type="submit" value="上傳文件"> 
  12.  
  13.  <!--限制客戶端上傳文件的最大值 隱藏域另起一行--> 
  14.  
  15.  <!--<input type="hidden" name="MAX_FILE_SIZE" value="字節數">--> 
  16.  
  17.  <!--accept設置上傳文件的類型--> 
  18.  
  19.  <!--<input type="file" name="myfile" accept="image/jpg,image/png,image/gif">--> 
  20.  
  21. </form> 

fileUpload.php

  1. header("content-type:text/html;charset:utf-8"); 
  2.  
  3. $fileInfo = $_FILES["myFile"]; 
  4.  
  5. $filename = $fileInfo["name"]; 
  6.  
  7. $type = $fileInfo["type"]; 
  8.  
  9. $error = $fileInfo["error"]; 
  10.  
  11. $size = $fileInfo["size"]; 
  12.  
  13. $tmp_name = $fileInfo["tmp_name"]; 
  14.  
  15. $maxSize=2*1024*1024;//允許的最大值 
  16.  
  17. $allowExt=array("jpeg","jpg","gif"); 
  18.  
  19. $flag = true;//檢測是否為真實的圖片類型 
  20.  
  21.  
  22.  
  23. //判斷錯誤號 
  24.  
  25. if($error == 0){ 
  26.  
  27.  //判斷上傳文件的大小 
  28.  
  29.  if($size>$maxSize){ 
  30.  
  31.  exit("上傳文件過大"); 
  32.  
  33.  } 
  34.  
  35.    
  36.  
  37.  //檢測文件類型 
  38.  
  39.  //取出文件擴展名 
  40.  
  41.  $ext = pathinfo($filename,PATHINFO_EXTENSION); 
  42.  
  43.  if(!in_array($ext,$allowExt)){ 
  44.  
  45.  exit("非法文件類型"); 
  46.  
  47.  } 
  48.  
  49.  
  50.  
  51.  //檢測是否為真實的圖片類型 
  52.  
  53.  if($flag){ 
  54.  
  55.  if(@!getimagesize($tmp_name)){ 
  56.  
  57.   exit("不是正的圖片類型"); 
  58.  
  59.  } 
  60.  
  61.  } 
  62.  
  63.  
  64.  
  65.  //創建目錄 
  66.  
  67.  $path = "D:/test/"
  68.  
  69.  if(!file_exists($path)){ 
  70.  
  71.  mkdir($path,0777,true); 
  72.  
  73.  chmod($path,0777); 
  74.  
  75.  } 
  76.  
  77.  
  78.  
  79.  //確保文件名唯一,防止重名覆蓋 
  80.  
  81.  $uniName = md5(uniqid(microtime(true),true)).".".$ext
  82.  
  83.  $destination = $path.$uniName
  84.  
  85.  if(@move_uploaded_file($tmp_name,$destination)){ 
  86.  
  87.  echo "上傳成功"
  88.  
  89.  }else
  90.  
  91.  echo "上傳失敗"
  92.  
  93.  } 
  94.  
  95. }else
  96.  
  97.  switch($error){ 
  98.  
  99.  case 1: 
  100.  
  101.  case 2: 
  102.  
  103.  case 3: 
  104.  
  105.  case 4: 
  106.  
  107.  case 6: 
  108.  
  109.  case 7: 
  110.  
  111.  case 8: 
  112.  
  113.   echo "上傳錯誤"
  114.  
  115.   break
  116.  
  117.  } 
  118.  
希望本文所述對大家學習php程序設計有所幫助。

Tags: php文件上傳

分享到:

福利彩票25选5开奖结果