本文主要和大家分享php上傳檔案深度解析,前面我們也和大家分享過很多php上傳檔案的文章,希望本文能協助到大家。
1.php上傳檔案配置php.ini配置:
(1)file_uploads=on|off : 確定伺服器上的 PHP指令碼是否可以接受檔案上傳。
(2)max_execution_time=integer : PHP指令碼在註冊一個致命錯誤之前可以執行的最長時
間,以秒為單位。
(3)memory_limit=integer : 設定指令碼可以分配到的最大記憶體,以MB為單位。這可以防
止失控的指令碼獨佔伺服器記憶體。
(4)upload_max_filesize=integer :設定上傳檔案最大大小,以MB 為單位。此指令必須小
於 post_max_size。
(5)upload_tmp_dir=string : 設定上傳檔案在處理之前必須存放在伺服器的臨時一個位置,
直到檔案移動到最終目的地為止。
(6)post_max_size=integer :確定通過 POST方法可以接受的資訊的最大大小,以MB 為
單位
2.php上傳相關的方法
(1)bool is_uploaded_file(string $filename)
定義:is_uploaded_file() 函數判斷指定的檔案是否是通過 HTTP POST 上傳的
參數 $filename : $_FILES['file_img']['tmp_name'](舉例)
規定要檢查的檔案:C:\Windows\Temp\php9632.tmp
(2)bool move_uploaded_file ( string $filename , string $destination )
定義:move_uploaded_file () 函數將上傳的檔案移動到新位置 一般和is_uploaded+_file()方法配合使用
參數 $filename : $_FILES['file_img']['tmp_name'](舉例)
規定要移動的檔案 : C:\Windows\Temp\php9632.tmp
$destination :dirname(__FILE__).DS.'uploads'.DS.$_FILES['file_img']['name'](舉例)
規定要移動的檔案位置:D:\myWAP\myWeb\learn\php_upload\uploads\hm_g_img.jpg
3.php上傳案例:規定只能上傳圖片檔案
(1) 必要檔案夾和檔案
(2)file_unload_select.php 檔案用於檔案的HTML瀏覽選擇,上傳點擊:
enctype = "multipart/form-data" 固定寫法,不然檔案上傳失敗
action = "url"
method="post" 一般上傳都是post
(3)upload.php 檔案用於處理上傳檔案 判斷上傳檔案類型 以及 移動檔案到伺服器指定目錄:
//接收上傳檔案print_r($_FILES);define('DS',DIRECTORY_SEPARATOR);//判斷當前上傳的檔案是否為圖片$img_type_arr = array('image/png','image/jpeg','image/jpeg');//for迴圈遍曆數組 -- 第一方法判斷是否為數組中的子項for($i=0;$i<count($img_type_arr);$i++){ if($img_type_arr[$i] != $_FILES['file_img']['type'] && ($i == count($img_type_arr)-1) ) { echo "" exit; }}//數組方法array_in() -- 第二方法判斷是否為數組中的子項if(!is_uploaded_file($_FILES['file_img']['tmp_name'])){ //如果臨時檔案不存在,則說明沒有上傳到臨時檔案夾 echo '上傳到臨時檔案夾失敗';}else{ //echo '上傳到臨時檔案夾成功'; $img_path = dirname(__FILE__).DS.'uploads'.DS.$_FILES['file_img']['name']; //echo $img_path; //進行移動檔案到伺服器位址 if(@move_uploaded_file($_FILES['file_img']['tmp_name'],$img_path)) { //顯示圖片 echo "<img src=".$img_path." />" } else { cho '移動檔案失敗'; }}
(4)show_image.php 用於接收圖片檔案路徑顯示上傳成功的圖片:
$img_path = $_GET['url'];echo "";
(5)上傳最核心的就是利用$_FILES的子項參數,完成上傳和判斷:
Array ( [file_img] => Array ( [name] => news_001_01.jpg [type] => image/jpeg [tmp_name] => C:\Windows\Temp\php504D.tmp [error] => 0 [size] => 158360 ) )
分析:
$_FILES['file_img']['name'] : news_001_01.jpg 上傳檔案名稱
$_FILES['file_img']['type'] : image/jpeg 上傳檔案的類型
$_FILES['file_img'][' tmp_name '] : C:\Windows\Temp\php504D.tmp 該上傳檔案臨時檔案的存放路徑
$_FILES['file_img']['error '] : 0 , 1, 2, 3, 4
0 -> 表示檔案上傳成功
1 -> 表示上傳檔案的大小超出了約定值(PHP.ini指定)
2 -> 表示上傳檔案的大小超出了約定值(HTML表單指定)
3 -> 表示檔案只被部分上傳
4 -> 表示沒有上傳任何檔案
相關推薦:
原生JS上傳大檔案顯示進度條 php上傳檔案代碼
php上傳檔案代碼實現原生JS上傳大檔案顯示進度條的樣本
php上傳檔案的簡單代碼