首頁 >後端開發 >php教程 >php上傳文件深度解析

php上傳文件深度解析

小云云
小云云原創
2018-03-15 09:55:551350瀏覽

本文主要跟大家分享php上傳檔案深度解析,前面我們也跟大家分享很多php上傳檔案的文章,希望這篇文章能幫助大家。

1.php上傳檔案設定php.ini設定:

1file_uploads=on|off  確定伺服器上的 PHP 腳本是否可以接受檔案上傳。

2max_execution_time=integer  PHP 腳本在註冊一個致命錯誤之前可以執行的最長時

#間,以秒為單位。

3memory_limit=integer #: 設定腳本可以分配到的最大內存,以MB為單位。這可以防

止失控的腳本獨佔伺服器記憶體。

4upload_max_filesize=integer :設定上傳檔案最大大小,以MB 為單位。此指令必須小

 post_max_size

5upload_tmp_dir=string  設定上傳檔案在處理之前必須存放在伺服器的暫時一個位置,

直到檔案移動到最終目的地為止。

6post_max_size=integer :確定透過 POST方法可以接受的訊息的最大大小,以MB 

單位

2.php上傳相關的方法

##1bool  is_uploaded_file(string $filename) 

 

定義:is_uploaded_file() 函數判斷指定的檔案是否是透過 HTTP POST 上傳的

#參數 $filename : $_FILES['file_img']['tmp_name'](範例)

規定要檢查的檔案:C:\Windows\Temp\php9632.tmp

2bool  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'.D.D.######dirname(__FILE__).DS.'uploads'.DS.$m_FIname'.Dirname(ffile_func_$imname'.DS.$_FIname'.DS_$m. ####(範例)############### ###規定要移動的檔案位置:############D:\myWAP\myWeb \learn\php_upload\uploads\hm_g_img.jpg################3.php#####上傳案例:規定只能上傳圖片檔案######## ##########################(######1######)### ####必要資料夾和檔案########################

2file_unload_select.php 檔案用於檔案的HTML瀏覽選擇,上傳點擊:


#enctype = "multipart/form-data"  #固定寫法,不然文件上傳失敗

         action = "url"

         method="post"#         method="post"#         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[&#39;file_img&#39;][&#39;type&#39;] && ($i == count($img_type_arr)-1) )
       {
                echo ""
                exit;
       }
}



//数组方法array_in() -- 第二方法判断是否为数组中的子项
if(!is_uploaded_file($_FILES[&#39;file_img&#39;][&#39;tmp_name&#39;]))
{
      //如果临时文件不存在,则说明没有上传到临时文件夹
      echo  &#39;上传到临时文件夹失败&#39;;
}
else
{

   //echo &#39;上传到临时文件夹成功&#39;;
   $img_path = dirname(__FILE__).DS.&#39;uploads&#39;.DS.$_FILES[&#39;file_img&#39;][&#39;name&#39;];

   //echo $img_path;

   //进行移动文件到服务器地址
   if(@move_uploaded_file($_FILES[&#39;file_img&#39;][&#39;tmp_name&#39;],$img_path))
   {
        //显示图片
        echo "<img src=".$img_path." />"
   }
   else
   {
        cho &#39;移动文件失败&#39;;

   }
}


4##show_image.php 用來接收圖片檔案路徑顯示上傳成功的圖片:

$img_path = $_GET[&#39;url&#39;];

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上傳檔案的簡單程式碼######

以上是php上傳文件深度解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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