首頁  >  文章  >  後端開發  >  實例分析PHP單檔和多檔上傳

實例分析PHP單檔和多檔上傳

小云云
小云云原創
2017-12-14 09:37:591380瀏覽

本文主要給大家詳細分析了PHP實作單一檔案上傳和多檔案上傳的程式碼以及問題解決方案,一起學習參考下,希望能幫助到大家。

$_FILES何時為空數組?

表單提交enctype 不等於multipart/form-data 的時候php.ini設定檔中,file_uploads = Off 上傳的檔案大小> php.ini設定檔中所設定的最大上傳大小時

只要出現$_FILES 為空數組,就可能出現以上的問題,必須修復!

如果未選擇任何檔案就馬上點擊“上傳按鈕”,$_FILES將會是一個有元素的數組,元素中的每個屬性都是空字串,error屬性為4

單一檔案上傳

$_FILES 資料結構

array(
  'filename' => array(
    'name' => 'xxx.png',
    'type' => 'image/png',
    'size' => 2548863,
    'tmp_name' => '/img/sdsdsd.png',
    'error' => 0
  )
)

無論是單一檔案或多檔案上傳,都會有5個固定屬性:name / size / type / tmp_name / error

多重檔案上傳

比起單檔案上傳,多檔案上傳處理起來要複雜多了前端的兩種多檔案上傳形式

//name相同
<form method="post" enctype="multipart/form-data">
  <input type="file" name="wt[]"/>
  <input type="file" name="wt[]"/>
  <input type="submit" value="提交"/>
</form>

//name不同(简单点)
<form method="post" enctype="multipart/form-data">
  <input type="file" name="wt"/>
  <input type="file" name="mmt"/>
  <input type="submit" value="提交"/>
</form>

後端的$_FILES 對應的資料結構不同

//name相同
array (size=1)
 'wt' => 
  array (size=5)
   'name' => 
    array (size=2)
     0 => string '新建文本文档 (2).txt' (length=26)
     1 => string '新建文本文档.txt' (length=22)
   'type' => 
    array (size=2)
     0 => string 'text/plain' (length=10)
     1 => string 'text/plain' (length=10)
   'tmp_name' => 
    array (size=2)
     0 => string 'C:\Windows\php1D64.tmp' (length=22)
     1 => string 'C:\Windows\php1D65.tmp' (length=22)
   'error' => 
    array (size=2)
     0 => int 0
     1 => int 0
   'size' => 
    array (size=2)
     0 => int 0
     1 => int 1820

//name不同(简单点)
array (size=2)
 'wt' => 
  array (size=5)
   'name' => string '新建文本文档 (2).txt' (length=26)
   'type' => string 'text/plain' (length=10)
   'tmp_name' => string 'C:\Windows\php39C7.tmp' (length=22)
   'error' => int 0
   'size' => int 0
 'mmt' => 
  array (size=5)
   'name' => string '新建文本文档.txt' (length=22)
   'type' => string 'text/plain' (length=10)
   'tmp_name' => string 'C:\Windows\php39D8.tmp' (length=22)
   'error' => int 0
   'size' => int 1820

欄位Error用途

值:1 上傳的檔案超過了php.ini 中upload_max_filesize 選項限制的值。

值:2 上傳檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。

值:3 檔案只有部分被上傳。

值:4 沒有檔案被上傳。值:5 上傳檔案大小為0.

相關推薦:

一個PHP檔案上傳類別分享_php實例

php實現多檔案上傳的一種方法

實例講解php實作常用檔案上傳類別

#

以上是實例分析PHP單檔和多檔上傳的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn