PHP移動互連網開發筆記(5)——檔案的上傳下載

來源:互聯網
上載者:User

一、檔案的上傳

1、用戶端設定:

(1)、在

標籤中將enctype和method兩個屬性指明相應的值。

Enctype="multipart/form-data"; Method="POST"

(2)、form表單中設定一個hidden類型的input框,其中name的值為MAX_FILE_SIZE的隱藏值

2、伺服器端設定:

(1)、$_FILES多維陣列:用於儲存各種上傳檔案有關的資訊

(2)、檔案上傳與php設定檔的設定,如以下php.ini檔案中的一些指令

指令 預設值 功能描述

file_uploads ON 確定伺服器上的PHP指令碼是否可以接受HTTP檔案上傳

memory_limit 8M 設定指令碼可以分配的最大記憶體量,防止失控的指令碼獨佔伺服器記憶體

upload_max_file 2M 限制PHP處理上傳檔案大小的最大值,此值必須小於POST_MAX_SIZE值

post_max_size 8M 限制通過POST方法可以接受資訊的最大值

upload_tmp_dir NULL 上傳檔案的臨時路徑,可以是一個絕對路徑

  1.    

3、PHP的檔案上傳及資源指令

file_uploads(boolean)

是否開啟HTTP POST檔案上傳功能

max_execution_time(integer)

PHP指令碼最長執行時間

memory_limit(integer) 單位M

PHP指令碼啟動並執行最大記憶體

upload_max_filesize(integer) 單位M

PHP上傳檔案的最大尺寸

upload_tmp_dir(string)

上傳檔案儲存體的臨時位置

post_max_size(integer) 單位M

HTTP POST資料的最大尺寸

4、$_FILES數組

$_FILES['userfile'][size]

擷取上傳檔案的位元組數

$_FILES['userfile']['type']

擷取上傳檔案的MIME類型,每種MIME類型都是由“/”分隔的主類型和子類型組成

$_FILES['userfile']['error']

擷取上傳檔案的錯誤碼,0:無任何錯誤,檔案上傳成功;1:上傳檔案大小超出了PHP設定檔中upload_max_filesize選項限定的值;2:上傳檔案大小超出了HTML表單中MAX_FILE_SIZE指定的值;3:表示檔案只被部分上傳;4:表示沒有上傳任何檔案。

$_FILES['userfile']['name']

擷取上傳檔案的原始名稱,包含副檔名

$_FILES['userfile']['tmp_name']

擷取上傳檔案的臨時位置名稱,這是儲存在臨時目錄中所指定的檔案名稱。

5、檔案上傳函數

is_upload_file

判斷指定的檔案是否是通過HTTP POST上傳

bool is_upload_file(string $filename)

move_upload_file

將上傳檔案移至新位置

bool move_upload_file(string $filename, string $destination)

注意:檔案上傳後,首先會儲存於伺服器的臨時目錄中,可以使用該函數將上傳檔案移動到新位置,與copy()和move()相比,它能檢測並確保第一個參數filename指定的檔案是否是合法上傳的檔案。

6、錯誤資訊描述

UPLOAD_ERR_OK{value=0}

UPLOAD_ERR_INI_SIZE{value=1}

UPLOAD_ERR_FORM_SIZE{value=2}

UPLOAD_ERR_PARTIAL{value=3}

UPLOAD_ERR_NO_FILE{value=4}

UPLOAD_ERR_NO_TMP_DIR{value=6}

UPLOAD_ERR_CANT_WRITE{value=7}



 
二、檔案下載

簡單檔案下載只需要使用HTML的連結標記,並將屬性href的URL值指定下載的檔案即可。這種方法只能處理一些瀏覽器不能識別的MIME類型檔案。




 

 

為了提高安全性,不希望在a標籤中給出檔案連結,則必須向瀏覽器發送必要的頭資訊,我們可以使用如下代碼。

 

三、檔案函數庫

touch

設定檔案的訪問和修飾時間

bool touch(string $filename[, int $time[, int $time]])

copy

複製檔案

bool copy(string $source, string $dest)

注意:移動檔案請使用rename函數

file_put_contents

將一個字串寫入檔案

int file_put_contents(string $filename, string $data[, int $flag[, resource $content]])

file_get_contents

將整個檔案讀到字串

string file_get_contents(string $filename[, bool user_include_path [, resource $content[, int $offset[, int $maxlen]]]])

 

四、序列化與還原序列化

serialize

序列化

string serialize(mixed $value)

注意:serialize()可處理除了resouce之外的任何類型。甚至可以serialize()那些包含了指向其自身引用的數組。

unserialize

還原序列化

mixed unserialize(string $str)



● date

格式化一個本地時間/日期

string date(string format[, int timestamp]);

● getdate

取得日期/時間資訊

array getdate([int timestamp]);


● microtime

返回當前Unix時間戳記和微秒數

mixed microtime([bool get_as_float]);

● date_default_timezone_set

設定預設時區

bool date_default_timezone_set(string timezone_identifier);

● date_default_timezone_get

擷取預設時區

string date_default_timezone_get(void);

三、字元函數庫

strlen

擷取字串長度

int strlen(string $str);

strtolower

字串轉換為小寫

string strtolower(string $str);

strtoupper

字串轉換為大寫

string strtoupper(string $str);

ucfirst

首字母大寫

string ucfirst(string $str);

ucwords

將每個單詞的首字母轉換為大寫字母

string ucwords(string $str);

ltrim

從字串開始的位置刪除空格或其他字元

string ltrim(string $str [, string $charlist]);

rtrim

從字串結束的位置刪除空格或者其他字元

string rtrim(string $str[, string $chirlist]);

trim

從字串開始和結束的位置刪除空格或者其他字元

str_replace

字元替換

mixed str_ireplace(mixed $search, mixed $replace, mixed $subject, [int $count]);

str_ireplace

字元替換

mixed str_ireplace(mixed $search, mixed $replace, mixed $subject, [int $count]);

md5

計算字串的MD5雜湊

string md5(string $str[, bool $raw_output=false]);

strpos

返回一個字元在另一個字元第一次出現的位置

int strpos(string haystack, mixed needle[, int offset]);



 



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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