php上傳檔案深度解析

來源:互聯網
上載者:User
本文主要和大家分享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上傳檔案的簡單代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.