国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php文件上傳的應用和原理詳解

2024-09-04 11:44:45
字體:
來源:轉載
供稿:網友

php中上傳文件必須知道幾個技巧,一個必須是由表單post過去的數據,然后由php move_uploaded_file進行接受了,再保存到服務器指定路徑即可。

1.form 標簽 enctype 屬性。

2.$_FILES 系統函數。 //將上傳內容轉換為數組。

3.move_uploaded_file 函數。 //移動存放在緩存文件夾里的上傳文件到指定文件夾。

4.is_uploaded_file 函數。 //判斷是否存在。

1.form 標簽

格式:<form enctype="multipart/form-data" ... ...>

<input name="upfile" type="file">

2.$_FILES 系統函數

$_FILES['name'] //客戶端上傳文件原文件名。

$_FILES['type'] //文件的MIME類型,如:“image/gif”

$_FILES['size'] //上傳文件大小,字節為單位。

$_FILES['tmp_name'] //臨時文件名,一般為默認。

$_FILES['error'] //上傳相關情況代碼(0:成功,1:超過php.ini設置大小。2:超過PHP文件代碼指定大小。3:文件只有部分被上傳。4:沒有文件被上傳。5:上傳文件大小為0。)

3.move_uploaded_file 函數

上傳后移動文件到目標位置的函數

move_uploaded_file(臨時文件,目標位置和文件名;)

4.is_uploaded_file 函數

判斷上傳MIME類型的文件函數

is_uploaded_file(MIME);

實例代碼如下:

  1. <form enctype="multipart/form-data" action="upload.php" method="post">  
  2. <input type="hidden" name="max_file_size" value="100000">  
  3. <input name="userfile" type="file">    
  4. <input type="submit" value="上傳文件">  
  5. </form> 

注意:1、表單中enctype=”multipart/form-data”必須指定,以便讓服務器知道文件帶有常規的表單信息。

2、必須有一個可以設置上傳文件最大長度的表單區域,即允許上傳文件的最大值(按字節計算),它是隱藏值域,即max_file_size,通過設置其Value(值)可以限制上傳文件的大小,避免用戶在花時間等待上傳大文件之后才發現該文件太大了的麻煩。但是一般別人可以繞過這個值,所以安全起見,最好是在php.ini文件中配置upload_max_filesize選項,設定文件上傳的大小,默認是2M

實例代碼如下:

  1. function uploadfile($type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_dir
  2.     $MAX_SIZE = 2000000; 
  3.     $FILE_MIMES = array('image/pjpeg','image/jpeg','image/jpg','image/gif','image/png'); 
  4.     $FILE_EXTS = array('.jpg','.gif','.png','.JPG','.GIF','.PNG'); 
  5.     $file_path = $upload_dir.$targetname
  6.      
  7.     if(!is_dir($upload_dir)) 
  8.     { 
  9.         if(!mkdir($upload_dir)) 
  10.             die("文件上傳目錄不存在并且無法創建文件上傳目錄"); 
  11.         if(!chmod($upload_dir,0755)) 
  12.             die("文件上傳目錄的權限無法設定為可讀可寫"); 
  13.     } 
  14.      
  15.     if($size>$MAX_SIZE
  16.         die("上傳的文件大小超過了規定大小"); 
  17.     if($size == 0) 
  18.         die("請選擇上傳的文件"); 
  19.     if(!in_array($type,$FILE_MIMES) || !in_array($ext,$FILE_EXTS)) 
  20.         die("請上傳符合要求的文件類型"); 
  21.     if(!move_uploaded_file($tmp_name$file_path)) 
  22.         die("復制文件失敗,請重新上傳"); 
  23.     switch($error
  24.     { 
  25.         case 0: 
  26.             return ; 
  27.         case 1: 
  28.             die("上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值"); 
  29.         case 2: 
  30.             die("上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值"); 
  31.         case 3: 
  32.             die("文件只有部分被上傳"); 
  33.         case 4: 
  34.             die("沒有文件被上傳"); 
  35.     } 

如何上傳多個文件?比如同時上傳3個文件,代碼如下:

只需將<input name="userfile" type="file"> 改成

<input name="userfile[]" type="file">

<input name="userfile[]" type="file">

<input name="userfile[]" type="file">

對應的在調用此函數時,$_FILES['userfile']['name'][0],代表第一個文件的相關文件信息,依此類推,其他也一樣。

一些關于php性能配置,有必須時我們也可以修改一下

max_execution_time = 30 ;每個PHP頁面運行的最大時間值(秒),默認30秒

max_input_time = 60 ;每個PHP頁面接收數據所需的最大時間,默認60秒

memory_limit = 128m ;每個PHP頁面所吃掉的最大內存,默認128M,如果覺得小了,可以設置大點,128夠用。

  1. max_execution_time = 600 
  2. max_input_time = 600 
  3. upload_max_filesize = 32m 
  4. post_max_size = 32m 

如果文件大小限制了我們可以如下解決,打開php.ini,首先找到

file_uploads = on ;是否允許通過HTTP上傳文件的開關。默認為ON即是開

upload_tmp_dir ;文件上傳至服務器上存儲臨時文件的地方,如果沒指定就會用系統默認的臨時文件夾

upload_max_filesize = 8m ;望文生意,即允許上傳文件大小的最大值。默認為2M

post_max_size = 8m ;指通過表單POST給PHP的所能接收的最大值,包括表單里的所有值。默認為8M

一般地,設置好上述四個參數后,上傳<=8M的文件是不成問題,在網絡正常的情況下,但如果要上傳>8M的大體積文件,只設置上述四項還一定能行的通,進一步配置以下的參數.

max_execution_time = 600 ;每個PHP頁面運行的最大時間值(秒),默認30秒

max_input_time = 600 ;每個PHP頁面接收數據所需的最大時間,默認60秒

memory_limit = 8m ;每個PHP頁面所吃掉的最大內存,默認8M

把上述參數修改后,在網絡所允許的正常情況下,就可以上傳大體積文件了

  1. max_execution_time = 600 
  2. max_input_time = 600 
  3. memory_limit = 32m 
  4. file_uploads = on 
  5. upload_tmp_dir = /tmp 
  6. upload_max_filesize = 32m 
  7. post_max_size = 32m 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南开区| 武汉市| 新巴尔虎右旗| 桦川县| 阿拉善右旗| 安多县| 海晏县| 家居| 临泉县| 铜川市| 崇阳县| 迁西县| 克什克腾旗| 灵石县| 新河县| 遵化市| 松桃| 合山市| 西充县| 太仓市| 高清| 威远县| 始兴县| 乌兰察布市| 巴彦县| 海南省| 琼结县| 河北区| 多伦县| 炎陵县| 犍为县| 营山县| 同仁县| 临洮县| 广河县| 肇庆市| 濮阳市| 遂平县| 阿拉善左旗| 嘉善县| 大宁县|