首頁 > 後端開發 > php教程 > PHP中,檔案上傳_PHP教程

PHP中,檔案上傳_PHP教程

WBOY
發布: 2016-07-21 15:59:39
原創
751 人瀏覽過

在PHP中,檔案上傳一般是透過move_uploaded_file()來實現的。 
bool move_uploaded_file ( string filename, string destination )此函數檢視並確保由 filename 指定的檔案是合法上傳的檔案(即透過 PHP  HTTP PO 所指定的檔案所上傳的機制)。如果文件合法,則將其移至由 destination 指定的文件。  

如果 filename 不是合法的上傳文件,不會有任何動作,move_uploaded_file() 將會傳回 FALSE。  

如果 filename 是合法的上傳文件,但因某些原因無法移動,則不會有任何動作,move_uploaded_file() 將會回傳 FALSE。此外還會發出警告。 

下面我們透過一個實例來說明PHP是如何實現檔案上傳的。
test.php 的原始檔案 

複製程式碼 程式碼如下:
  
  
網站檔案上傳實例  
>>
  
  
   
  
  
  
  

MAX_FILE_SIZE 隱藏欄位(單位為位元組)必須放在檔案輸入欄位之前,其值為接收檔案的最大尺寸。這是對瀏覽器的建議,PHP 也會檢查此項目。在瀏覽器端可以簡單繞過此設置,因此不要指望用此特性來阻擋大型檔案。實際上,PHP 設定中的上傳檔案最大值是不會失效的。但最好還是在表單中加上此項目,因為它可以避免用戶在花時間等待上傳大檔案之後才發現檔案過大上傳失敗的麻煩。 

附註: 要確保檔案上傳表單的屬性是 enctype="multipart/form-data",否則檔案將無法上傳。 

在處理上傳頁面中,上傳檔案的資訊是透過陣列 $_FILES 來取得的。我們假設檔案上傳欄位的名稱如上例所示,為 "upfile",則檔案資訊為: 

$_FILES['upfile']['name'] 

上傳檔案的原文件名。 

$_FILES['upfile']['type'] 

檔案的 MIME 類型,如果瀏覽器提供此資訊的話。一個例子是“image/gif”。不過此 MIME 類型在 PHP 端並沒有檢查,因此不要想當然認為有這個值。 

$_FILES['upfile']['size'] 

上傳檔案的大小,單位為位元組。 

$_FILES['upfile']['tmp_name'] 

檔案上傳後在服務端儲存的暫存檔名稱。 

$_FILES['upfile']['error'] 

和該檔案上傳相關的錯誤代碼。 

PHP 將隨檔案資訊陣列一起傳回對應的錯誤代碼。該程式碼可以在檔案上傳時產生的檔案陣列中的 error 欄位中被找到。程式碼如下: 

UPLOAD_ERR_OK 

其值為 0,檔案上傳成功。  

UPLOAD_ERR_INI_SIZE 

其值為 1,上傳的檔案超過了 php.ini 中 upload_max_filesize 選項限制的值 ,預設值為2M。 如果要上傳更大的,我們可以在php.ini裡找到 upload_max_filesize = 2M 修改後即可生效。 

UPLOAD_ERR_FORM_SIZE 

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

UPLOAD_ERR_PARTIAL 

其值為 3,檔案上傳不完全,且只有部分上傳。  

UPLOAD_ERR_NO_FILE 

其值為 4,且檔案上傳失敗。 

UPLOAD_ERR_NO_TMP_DIR 

其值為 6,而找不到臨時資料夾。 PHP 4.3.10 與 PHP 5.0.3 引進。 

UPLOAD_ERR_CANT_WRITE 

其值為 7,檔案寫入失敗。 PHP 5.1.0 引進。 

註: 以上值在 PHP 4.3.0 之後變成了 PHP 常數。
action.php 的原程式碼 
 
/** 
歡迎光臨我們來我站交流學習經驗  

*/ 

function getname($exname){ 

function getname($exname){ 
function getname($exname){ 
🎜>   $i=1; 
   if(!is_dir($dir)){ 
      mk  
     if (!is_file($dir.$i.".".$exname)){ 
        $name=$i.".".$exname; 
     $i ;
   } 

   return $dir.$name; 


$exname=strtolower(substrup$_FILES[ $_FILES['upfile']['name'],'.') 1))); 
$uploadfile = getname($exname);  

if (move_uploaded_file($_FI🎜>
if (move_uploaded_file($_FILES['upfile' ]['tmp_name'], $uploadfile)) { 
   echo "

檔案上傳成功!



"; 
}else { 
   echo "

檔案上上傳失敗!



"; 

echo "以下是檔案上傳的一些資訊: 
    

原始檔案名稱:".$_FILES['upfile']['name'] . 
    "

類型:" .$_FILES[' upfile']['type'] . 
    "

臨時檔案名稱:".$_FILES['upfile']['tmp_name']. 
    "

檔案大小:".$_FILES['upfile']['size'] . 
    "

錯誤代碼:".$_FILES['upfile']['error']; 
?>  

一定要確保上傳後檔案所在的資料夾的權限至為 777 ,這點在伺服器上體現的特別明顯,有時我們所寫的上傳程式碼沒有任何的錯誤,然而網路上卻無法實現上傳功能,原因就在這裡。 

這篇文章只是講如何透過PHP來實現文件上傳的,沒看過這部分的朋友可以參考一下。

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/317265.htmlTechArticle在PHP中,檔案上傳一般是透過move_uploaded_file()來實現的。 boolmove_uploaded_file(stringfilename,stringdestination)本函數檢查並確保由filename指定的檔案...
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板