一、文件的上傳
1、客戶端設置:
二、文件下載(1)、在<form>標簽中將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 上傳文件的臨時路徑,可以是一個絕對路徑
<html> <head> <title>file</title> </head> <body> <form name="form1" method="post" action="upload.php" enctype="multipart/form-data"> file:<input type="file" name="file"/><br> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"/> <input type="submit" value="fileUpload"/> <input type="reset" value="reset"/> </form> </body></html>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}
<?php print_r($_FILES); ?>
三、文件函數庫簡單文件下載只需要使用HTML的鏈接標記<a>,并將屬性href的URL值指定下載的文件即可。這種方法只能處理一些瀏覽器不能識別的MIME類型文件。
<html> <head> <title>file</title> </head> <body> <a href="php.zip">php.zip文件下載</a> </body></html>為了提高安全性,不希望在a標簽中給出文件鏈接,則必須向瀏覽器發送必穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq1xM230MXPoqOsztLDx7/J0tTKudPDyOfPwrT6wuuhozwvc3Ryb25nPjwvcD48cD48L3A+PHByZSBjbGFzcz0="brush:java;"><?php //發送指定文件MIME類型的頭信息 header("content-type:application/x-msdownload"); $fileName=$_GET['fileNmae']; $path="[$fileName]"; //發送描述文件的頭信息,附件和文件名 header(content-disposition:attachment:filename=[$fileName]); readfile($path);?>
四、序列化與反序列化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]]]])
PHP編程serialize
序列化
string serialize(mixed $value)
注意:serialize()可處理除了resouce之外的任何類型。甚至可以serialize()那些包含了指向其自身引用的數組。
unserialize
反序列化
mixed unserialize(string $str)
<?php $var="abcdefj";//序列化$arr=serialize($var);echo '序列化<br>';var_dump($arr);echo '<br>';//反序列化echo '反序列化<br>';$arr1=unserialize($arr);var_dump($arr1);echo '<br>';?>
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答