PHP學習文件處理與文件上傳 課件
更新時間:2008年06月15日 13:05:04 作者:
主要包括php文件處理,文件的處理,文件指針相關處理函數(shù),文件控制函數(shù)
DirectoryIterator自定義的類
getATime ():文件最后訪問時間
getCTime ():文件最后的修改時間
getGroup ():文件所屬組(僅UNIX)
getInode ():文件的節(jié)點(僅UNIX)
getOwner ():文件的宿主(僅UNIX)
getPerms ():訪問該文件的權限
getSize ():文件的大小
getType ():文件的類型
getFileName ():文件的名稱
getPath ():文件的路徑
isDir ():是否是目錄
isExecutable ():是否可以執(zhí)行
isFile ():是否是文件
isLink ():是否是軟鏈接文件
isReadable ():是否可讀
isWritable ():是否可寫
isDot ()方法分別過濾掉“.”和“..”目錄。
$dname=$_GET["dname"]; //獲取from表的信息
if(isset($dname)&&!empty($dname)){ //判斷變量是否被設置 檢測一個變量是否為空
$dir=new DirectoryIterator("{$dname}"); //new一個類
echo $dir->getPath()." //類的方法
}else{
$dir=new DirectoryIterator("D:\\"); //new d://目錄
echo $dir->getPath();
}
$delname=$_GET["del"];
if(isset($delname)&&!empty($delname)){
if(unlink("{$dir->getPath()}\\$delname"))
echo "刪除成功";
}
while($dir->valid()){
if($dir->isDir())
echo "<a href='file14.php?dname={$dir->getPath()}\\{$dir->current()}'>".
"{$dir->current()}</a><br>";
else
echo "{$dir->current()} <a href='#'>復制</a>".
" <a href='file14.php?del={$dir->current()}'>刪除</a><br>";
$dir->next();
}
范例2:function showdir($iter){ //設置一個函數(shù)方法 并賦值
for(;$iter->valid();$iter->next()){ //檢測目錄是否還有下一個目錄 想下移動一位
if($iter->isDir() && $iter->isDot()){//檢測是否是目錄 并過濾掉.和..目錄位置
echo "目錄".$iter->current()."<br>"; //指向返回列表元素的值
}else{
echo $iter->current().$iter->getSize()."字節(jié)<br>"; 反則 返回列表的值 并查看文件大小
}
}
}
showdir(new DirectoryIterator("C:/")); //傳參 new一個系統(tǒng)默認類
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PHP文件上傳
與文件系統(tǒng)和服務器的交互
文件上傳`使用目錄函數(shù) `與文件系統(tǒng)的交互`使用程序執(zhí)行函數(shù)`與環(huán)境變量交互
文件上傳
在B/S程序中文件上傳已經(jīng)成為一個常用功能。其目的是客戶可以通過瀏覽器(Browser)將文件上傳到服務器(Server)上的指定目錄
PHP中文件上傳的基礎知識
表單提交`對文件的操作
何為文件上傳?
為了滿足傳遞文件信息的需要:HTTP協(xié)議實現(xiàn)了文件上傳機制,從而可以將客戶端的文件通過自己的瀏覽器上傳到服務器上指定目錄存放。
HTML規(guī)范規(guī)定上傳文件時表單頭必須使用
<html>
<head><title>文件上傳</title></head>
<body>
<form action="todo.php" method="post" enctype="multipart/form-data"> //返回值 post 方式上傳 表示要上傳一個文件
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
上傳文件:<input type="file" name="userfile">
提交:<input type="submit" value="提交查詢">
</form>
</body>
</html>
注意幾個特征屬性:
POST方法:
表單最常用的功能,向目標頁面?zhèn)鬟f變量,我們在上傳文件的時候,會在表單中設置相應的屬性,來完成文件的傳遞.
enctype="multipart/form-data"
這樣服務器就會知道,我們要傳遞一個文件,這樣服務器可以知道上載的文件帶有常規(guī)的表單信息。
MAX_FILE_SIZE
此字段必須在文件輸入字段之前,控制最大的傳遞文件的大小(字節(jié)) ——真的可以控制嗎?
<input type="file" name="userfile">
設置瀏覽器文件輸入瀏覽按鈕
我們在服務器端的php.ini中設置對表單傳遞的數(shù)據(jù)進一步判斷
file_uploads = On /Off 是否允許文件上傳
upload_max_filesize = 2M 上傳的文件的最大大小
post_max_size = 8M POST數(shù)據(jù)所允許的最大大小
表單傳遞的數(shù)據(jù),文件只是其中的一部分,所以設置時,upload_max_filesize應該小于post_max_size
超級全局數(shù)組$_FILES
PHP程序中,需要處理的上傳數(shù)據(jù)保存在全局數(shù)組中$_FILES(超級全局數(shù)組)
保存$_FILES數(shù)組中的元素,將HTML表單的type="file"標記的名稱name="userfile" 存放在數(shù)組中。
存儲在$_FILES['userfile']['name']中的值是:客戶端文件系統(tǒng)的文件的名稱
存儲在$_FILES['userfile']['type']中的值是:客戶端傳遞的文件的類型
存儲在$_FILES['userfile']['size']中的值是:文件的字節(jié)的大小
存儲在$_FILES['userfile']['tmp_name']中的值:文件被上傳后在服務器存儲的臨時全路徑
```````````````````````````````````````````
存儲在$_FILES['userfile']['error']中的值是:文件上傳的錯誤代碼-php 4.2以后增加的功能
存儲在$_FILES['userfile']['error']中的值
值為0:表示沒有發(fā)生任何錯誤。
值為1:表示上傳文件的大小超出了約定值。文件大小的最大值是在PHP配置文件中指定的,該指令是:upload_max_filesize。
值為2:表示上傳文件大小超出了HTML表單隱藏域?qū)傩缘腗AX_FILE_SIZE元素所指定的最大值。
值為3:表示文件只被部分上傳。
值為4:表示沒有上傳任何文件。
````````````````````````````````````
is_uploaded_file( )檢測是否是上傳文件
move_uploaded_file(臨時路徑/臨時文件名,目的路徑/目的文件名 ) 函數(shù)將存放在臨時目錄下的上傳文件拷貝出來,存放到指定目錄的指定文件名,如果目標存在將會被覆蓋。
范例:print_r($_FILES["upfile"]);//將表單提交的系統(tǒng)存放在這
echo "文件名字".$_FILES["upfile"]["name"];//文件名字
if($_FILES["upfile"]["error"]<=1){//錯誤代碼小于1 大于1表示有錯誤
echo "請選擇文件";
}
if(is_uploaded_file($_FILES["upfile"]["tmp_name"])){//檢測這個文件是否是上傳文件 文件的臨時路徑
echo '是上傳文件';
move_uploaded_file($_FILES["upfile"]["tmp_name"],"./upload/".$_FILES["upfile"]["name"]);
//將臨時文件轉(zhuǎn)移到upload目錄 文件名 為原名
}else{
echo '不是上傳文件';
}
文件上傳后的臨時存放目錄
上傳的文件被放置到服務器端臨時目錄:/tmp目錄里面 命名為一個唯一的,隨機生成的臨時文件名。 注:該文件在程序執(zhí)行完后將自動被刪除掉。在刪除前可以像本地文件一樣操作。
/tmp目錄是默認的上傳臨時文件存放地點, 如果需要更改這個目錄: 可以編輯/etc/php.ini 文件File Uploads 段的upload_tmp_dir 屬性值。
當配置文件php.ini的register_globals屬性被設置成on的情況
<input type=file name=myfilename>
將生成全局變量:$myfilename等
```````````````````````````````````````````````
當需要上傳多個文件的情況,有兩種實現(xiàn)的解決方法:
使用不同的表單元素
<input type=file name=file_a>
<input type=file name=file_b>
使用數(shù)組格式的表單元素
<input type=file name=file[1]>
<input type=file name=file[2]>
`````````````````````````````````````````````````
使用目錄函數(shù)
opendir?--?打開目錄句柄
closedir?--?關閉目錄句柄
readdir?--?從目錄句柄中讀取條目
語法格式:$d=opendir("./upload"); //打開這個文件目錄
while($s=readdir($d)){ //循環(huán)輸出讀取到的條目
echo $s."<br>";
}
closedir($d); //關閉句柄
創(chuàng)建和修改目錄
mkdir?--?新建目錄
rmdir?--?刪除目錄
mkdir("D:\\up");//創(chuàng)建一個目錄
rmdir("up");//刪除一個目錄
磁盤操作
disk_free_space():統(tǒng)計某個磁盤的剩余空間
disk_total_space():顯示邏輯磁盤的容量
echo disk_free_space("D:\\")/1024/1024/1024;
echo disk_total_space("D:\\")/1024/1024/1024;
getcwd():返回當前腳本所在路徑
chdir():類似DOS的cd命令,改變當前路徑
echo getcwd();//查看當前腳本路徑
chdir("D:\\");//改變
使用程序執(zhí)行函數(shù)
exec( ) 函數(shù)可以將要執(zhí)行的命令作為參數(shù)。
passthru( ) 結果直接輸出顯示到瀏覽器。
system( )也是直接輸出顯示到瀏覽器,但有返回值
phpchana 課件

相關文章
30分鐘學會用PHP寫帶數(shù)據(jù)庫的簡單通訊錄
這篇文章主要給大家介紹了關于30分鐘學會用PHP寫帶數(shù)據(jù)庫的簡單通訊錄,需要的朋友可以參考下2006-12-12PHP PDOStatement::fetchColumn講解
今天小編就為大家分享一篇關于PHP PDOStatement::fetchColumn講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫操作
PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫操作...2007-03-03模擬SQLSERVER的兩個函數(shù):dateadd(),datediff()
模擬SQLSERVER的兩個函數(shù):dateadd(),datediff()...2006-10-10