本篇文章主要給大家詳細介紹PHP檔案上傳方法及其資訊解析。
用php實作檔案上傳功能在PHP專案開發中是比較常見的,但是對於一些新手來說或許有些難度,下面我們透過具體的程式碼實例給大家詳細解說。
先建立一個檔案上傳的HTML form表單.
程式碼範例如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> 选择文件进行上传: <input type="file" name="file"> <input type="submit" value="上传"> </form> </body> </html>
效果如圖:
在上述程式碼中,我們為input按鈕設定了file類型,並且給上傳的檔案名稱也設定為file。當我們點擊選擇檔案或圖片時,form表單資料就會傳送到upload.php中,然後對上傳的檔案進行相關的操作。
那麼在upload.php檔案中,我們將定義一個方法對上傳的檔案進行相關資訊解析操作.
具體程式碼範例如下:
<?php $fileInfo = $_FILES['file']; var_dump($_FILES['file']); function upload_file($fileInfo, $upload = "./upload", $imagesExt = ['gif', 'png', 'jpg']) { if ($fileInfo['error'] === 0) { $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION)); if (!in_array($ext, $imagesExt)) { return "文件非法类型"; } if (!is_dir($upload)) { mkdir($upload, 0777, true); } $fileName = md5(uniqid(microtime(true), true)) . "." . $ext; $destName = $upload . "/" . $fileName; if (!move_uploaded_file($fileInfo['tmp_name'], $destName)) { return "文件上传失败!"; } return "文件上传成功!"; } else { switch ($fileInfo['error']) { case 1: echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值'; break; case 2: echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值'; break; case 3: echo '文件只有部分被上传'; break; case 4: echo '没有文件被上传'; break; case 6: echo '找不到临时文件夹'; break; case 7: echo '文件写入失败'; break; } } } var_dump(upload_file($fileInfo));
在上述PHP程式碼中定義了一個變數$fileInfo來接收form表單上傳來的數據,再用var_dump函數列印出上傳檔案file的信息,且以陣列方式顯示。
那麼在還沒有設定方法對檔案進行判斷時,直接透過瀏覽器存取出現的效果如下圖:
提示:error表示的是錯誤訊息說明,這裡的錯誤號碼為0,即表示上傳的檔案沒有任何錯誤。但在PHP手冊中,錯誤號不只為0 。
以下透過表格形式給大家簡單總結下error錯誤號碼的幾種狀況
值為0 |
#值為1 | 值為2 | 值為3 | #值為4 | #值為6 | |
沒有錯誤發生,檔案上傳成功。 | 上傳的檔案超過了php.ini中 upload_max_filesize 選項限制的值。 | 上傳檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項所指定的值。 | 檔案只有部分被上傳。 | 沒有檔案上傳 | #找不到暫存資料夾。 PHP 4.3.10 和 PHP 5.0.3 引進。 |
那麼在了解了error錯誤號碼的相關知識後,我們就可以設計PHP上傳方法,來對上傳檔案進行多種判斷。在上述程式碼中已經給大家非常詳細的寫出了方法判斷的具體程式碼,首先我們定義了upload_file()這個方法,其中賦予了三個參數,分別表示文件上傳信息,目錄以及判定文件類型的一個數組。
然後使用if else以及switch判斷語句對上傳檔案進行一一判斷。
這裡的方法裡分別根據了檔案的類型、上傳資料夾存在與否以及error錯誤訊息情況來進行判斷的。最後我們上傳一個圖片後,顯示的最終效果為下圖:
註:上述程式碼中md5()函數不是用來加密,而是用來編碼的。 以上文章內容就是關於PHP檔案上傳的具體方法介紹,希望對有需要朋友有幫助!其對應的影片教學
是【
以上是PHP檔案上傳方法詳解及其資訊解析【附影片】的詳細內容。更多資訊請關注PHP中文網其他相關文章!