PHP之文件上傳

文件上傳,其學習步驟如下:

①學習如何控制上傳文件(配置php.ini文件)

②學習對上傳文件判斷(判斷上傳文件的格式、大小)

③學習執行文件上傳操作的方法

1、開啓文件上傳功能

在php.ini中修改File_Uploads項的以下參數:

file_uploads:On服務器支持文件上傳;

upload_tmp_dir:上傳文件臨時目錄。在文件被成功上傳之前,文件首先存放到服務器端的臨時目錄中。

upload_max_filesize:服務器允許上傳文件大小的最大值,以MB爲單位。系統默認爲2MB。

在php.ini中還有其他幾個選項會影響到文件的上傳:

max_execution_time:PHP中一個指令所能執行的最大時間,單位是秒。該選項在上傳超大文件時必須要修改,否則即使上傳文件在服務器允許的範圍內,但是超過了指令所能執行的最大時間,仍然無法實現上傳。

memory_limit:PHP中一個指令所分配的內存空間。單位是MB。它的大小同樣會影響到超大文件的上傳。

2、全局變量$_FILES

對上傳文件進行判斷應用的是全局變量$_FILES,$_FILES是一個數組,它包含所有上傳的文件信息。

  • $_FILES[filename]['name'] - 被上傳文件的名稱
  • $_FILES[filename]['type'] - 被上傳文件的類型
  • $_FILES[filename]['size'] - 被上傳文件的大小,以字節計
  • $_FILES[filename]['tmp_name'] - 存儲在服務器的文件的臨時副本的名稱
  • $_FILES[filename]['error'] - 由文件上傳導致的錯誤代碼

3、將上傳文件移動到指定目錄

PHP中應用move_uploaded_file()函數實現文件上傳。但是,在執行文件上傳之前,爲了防止潛在的攻擊對原本不能通過腳本交互的文件進行非法管理,可以先應用is_uploaded_file()函數判斷指定的文件是否是通過HTTP POST上傳的,如果是返回TRUE,則可以繼續執行文件的上傳操作,否則將不能夠繼續執行。

<span style="font-size:18px;">bool is_uploaded_file( string filename)</span>

//filename必須指定類似於$_FILES['filename']['tmp_name']的變量,不可以使用從客戶端上傳的文件名$_FILES['filename']['name']。

<span style="font-size:18px;">bool move_uploaded_file( string filename, string destination)</span>

move_uploaded_file()將文件上傳到服務器中指定的位置。其參數filename指定上傳文件的臨時文件名;destination指定文件上傳後保存的新路徑和名稱。

4、文件下載技術

通過HTTP方式下載文件,其主要應用header()函數。

header()函數,屬於HTTP函數。其作用是以HTTP協議將HTML文檔的標頭送到瀏覽器,並告訴瀏覽器具體怎麼處理這個頁面。

<span style="font-size:18px;">void header( string string [, bool replace [, int http_response_code]])</span>
通過HTTP下載的代碼實例如下:
<span style="font-size:18px;"><?php
	header('Content-Type:image/jpg');//設置圖片類型
	header('Content-Disposition:attachment;filename="test.jpg"');//描述下載文件,指定文件名稱
	header('Content-Length'.filesize('test.jpg'));//定義下載文件大小
	readfile('test.jpg');//讀取文件,執行下載
?></span>



使用<a>標籤只能實現壓縮包的下載:如

<a href='test.rar'>壓縮包下載</a>

//test.rar即是要下載的壓縮包的路徑



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章