一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP與服務器文件系統的簡單交互

PHP與服務器文件系統的簡單交互

2021-03-14 17:39Al_assad PHP教程

這篇文章主要介紹了PHP與服務器文件系統的簡單交互的相關資料,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧

1、php.ini中關于文件上傳的設置指令

PHP與服務器文件系統的簡單交互

2、文件上傳過程

(1)上傳文件提交表單html代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!--向服務器上傳文件的HTML表單(限制為文本文件)-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Adminstration - upoload new files</title>
</head>
<body>
<h1>Upload new files</h1>
<form action="upload.php" method="post" enctyple="multipart/form-data" >
<!--enctyple:規定在發送到服務器之前對表單數據進行編碼的方式(在上傳控件時必須按照以上方式設置該屬性)-->
<div>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<!--規定傳輸文件的最大字節數-->
<label for="userfile">Upload a file</label>
<!--在<label>內點擊文本,會觸發該控件,此時瀏覽器會自動對焦到標簽for屬性所指向的表單控件上面-->
<input type="file" name="userfile" id="userfile">
<!--id屬性為<label>標簽for所指向控件元素的id號-->
<input type="submit" value="Send File">
</div>
</form>
</body>
</html>

(2)php處理上傳文件代碼

①在php腳本中,需要處理的數據保存在超級變量數組$_FILES中,開啟register_globals指令可以直接通過變量名訪問這些信息;

②假如表單變量名為“username“則有:

$_FILES['userfile']['tmp_name']:儲存文件在Web服務器中的臨時保存位置;
$_FILES['userfile']['name']:儲存用戶系統中文件的名稱;
$_FILES['userfile']['size']:儲存文件的大??;
$_FILES['userfile']['type']:儲存文件的類型;
$_FILES['userfile']['error]:儲存任何與文件上傳相關的錯誤代碼;

錯誤類型說明:

UPLOAD_ERR_INI_SIZE:1,上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。
UPLOAD_ERR_FORM_SIZE:2,上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。
UPLOAD_ERR_PARTIAL:3,文件只有部分被上傳。
UPLOAD_ERR_NO_FILE:4,沒有文件被上傳。
UPLOAD_ERR_NO_TMP_DIR:6,找不到臨時文件夾。PHP 4.3.10 和 PHP 5.0.3 引進。
UPLOAD_ERR_CANT_WRITE:7,文件寫入失敗。PHP 5.1.0 引進。

③php代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
//檢驗文件傳輸異常
if($_FILES['userfile']['error']>0){
echo 'Problem';
switch($_FILES['userfile']['error']){
case 1: echo 'File exceeded upload_max_filesize';break;
case 2: echo 'File exceeded max_file_size';break;
case 3: echo 'File only partially upload';break;
case 4: echo 'No file uploaded';break;
case 6: echo 'Cannot upload file: No temp directory specified';break;
case 7: echo 'Upload failed:Cannot write to disk';break;
}
exit;
}
//檢驗傳輸的文件是否為文本文件
if($_FILES['userfile']['type'] != 'text/plain'){
echo 'Problem: file is not plain text';
exit;
}
//將上傳文件包含在服務器中/uploads/的目錄下(該目錄必須獨立于Web文檔樹)
$upfile = '/uploads/'.$_FILES['userfile']['name']; //在指定目錄下以傳輸文件的文件名創建一個新文件
if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
if(! move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile)){ //將傳輸文件的臨時文件移動到創建的新文件
echo 'Problem: Could not move file to destination directory';
exit;
}
}
else{
echo 'Problem: Possible file upload attack.Filename:';
echo $_FILES['username']['name'];
exit;
}
echo "File uploaded seuucessfully<br/><br/>";
//對傳輸文件清除html和php標記
$contents = file_get_contents($upfile); //將文件內容提取為一個字符串;
$contents = strip_tags($contents); //對該字符串擦除html和tags標記;
file_put_contents($_FILES['userfile']['name'],$contents); //將該字符串重新寫入文件中;
//在瀏覽器上顯示傳輸的文本文件內容
echo "<p>Preview of uploaded file contents:<br/><hr>>";
echo nl2br($contents);
echo "</br></hr>";

3、使用目錄函數

(1)從目錄中讀取文件名

①使用opendir(),readdir(),closedir()函數;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$current_dir = '/uploads/'; //創建目錄url對象
$dir = opendir($current_dir); //打開目錄,結果返回一個目錄對象
echo "<p>Upload directory is $current_dir</p>";
echo "<p>Directory Listing:</p><ul>";
while(($file = readdir($dir)) !== false){ //讀取目錄對象
if($file != "." && $file != ".."){ //過濾當前目錄和上一級目錄
echo "<li>$file</li>";
echo "<a href=\"filedetails.php?file=\'.$file.\'\">".$file."</a><br/>";
}
}
echo "</ul>";
closedir($dir); //關閉目錄;
?>

②使用php的dir類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$current_dir = '/uploads/'; //創建目錄url對象
$dir = dir($current_dir); //創建dir對象
echo "<p>Handle is $dir->handle</p>";
echo "<p>Upload directory is $current_dir</p>";
echo "<p>Directory Listing:</p><ul>";
while(($file = $dir->read()) !== false){ //通過dir對象讀取目錄下的文件名
if($file != "." && $file != ".."){
echo "<li>$file</li>";
}
}
echo "</ul>";
$dir->close(); //關閉目錄
?>

(2)使用scandir()函數對文本名稱進行字母表的排序方式

?
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$current_dir = '/uploads/'; //創建目錄url對象
$files1 = scandir($current_dir); //將指定目錄下的文件名保存為一個數組,默認以字母升序排序
$files2 = scandir($current_dir,1); //將指定目錄下的文件名保存為一個數組,以字母降序排序
echo "<p>Upload directory is $current_dir</p>";
echo "<p>Directory Listing in alphabetical order,ascending:</p><ul>";
foreach($files1 as $file1) {
if($file1 != "." && $file1 != "..")
echo "<li>$file1</li>";
}
echo "</ul>";
?>

(3)獲取當前目錄的其他信息

dirname($path):返回路徑的目錄部分;

basename($path):返回路徑的名稱部分;

disk_free_space($path):返回路徑所在磁盤可以保存上傳文件的容量;

(4)創建和刪除目錄

①mkdir():創建目錄;

代碼:

?
1
2
3
$oldumask = umask(0); //重置當前權限碼
mkdir("/tmp/testing",0777); //創建目錄
umask($oldumask); //恢復當前權限碼

②rmdir():刪除目錄;

代碼:

?
1
2
rmdir("/temp/testing");
rmdir("c:\\tmp\\testing');

 

※要刪除的目錄必須是空目錄;

4、與文件系統的交互

(1)獲取文件信息:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
while(($file = readdir($dir)) !== false){
echo "<a href=\"filedetails.php?file=\'.$file.\'\">".$file."</a><br/>";
}
<?php
$current_dir = '/uploads/';
$file = basename($file); //獲取文件文件名
echo "<h1>Details of file</h1>";
echo "<h2>File data</h2>";
echo 'File last accessed: '.date('j F Y H:i',fileatime($file))."<br>"; //返回最近訪問的時間戳
echo 'File last modifixed: '.date('j F Y H:i',filemtime($file))."<br>"; //返回最近修改的時間戳
$user = posix_getpwuid(fileowner($file)); //返回用戶標識uid
echo 'File owner: '.$user['name']."<br/>";
$group = posix_getgrgid(filegroup($file)); //返回組織標識gid
echo 'File group: '.$group['name']."<br/>";
echo 'File permissions: '.decoct(fileperms($file))."<br/>"; //返回8位的權限碼
echo 'File type'.filetype($file)."<br/>"; //返回文件類型
echo 'File size'.filesize($file)."<br/>"; //返回文件字節數
echo "<h2>File Tests</h2>";
echo 'is_dir?'.(is_dir($file) ? 'true':'false')."<br/>";
echo 'is_executable?'.(is_executable($file) ? 'true':'false')."<br/>"; //判斷文件是否可執行;
echo 'is_file?'.(is_file($file) ? 'true':'false')."<br/>";
echo 'is_link?'.(is_link($file) ? 'true':'false')."<br/>";
echo 'is_readable?'.(is_readable($file) ? 'true':'false')."<br/>";
echo 'is_writable?'.(is_writable($file) ? 'true':'false')."<br/>";
?>

(2)更改文件屬性

chgrp(file,group):修改文件的分組;

chmod(file,permissions):修改文件的權限;

chown(file,user):修改文件的所有者;

(3)創建、刪除和移動文件

bool touch($filename,[int time,[ int atime]]):創建一個文件(time指定創建時間戳,atime指定可選時間戳)

unlink($filename):刪除一個文件

copy($source_path,$destination_path):復制一個文件

rename($oldfile,$newfile):重命名一個文件;

(4)使用程序執行函數

①String exec(String command[ ,array result [ ,int result_value]])

返回命名結果的最后一行,result變量可以返回字符組數,這些字符串代表輸出的每一行,result_value獲取返回代碼;

②void passthru(String command[ ,int result_value])

結果直接輸出到瀏覽器;

③String system(string command[ ,int return_value])

輸出結果到瀏覽器,返回命令結果的最后一行或false;

※在用戶提交的數據包括執行命令的一部分,應該進行以下包裝:

system(escapeshellcmd($command));

5、與環境變量交互

phpinfo()函數:獲取php的所有變量列表;

getenv("$key_name"):

setenv("$key_name=$value");

以上所述是小編給大家介紹的PHP與服務器文件系統的簡單交互,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩美女强理论片 | 猛h辣h高h文湿校园1v1 | 国产美女亚洲精品久久久综合91 | 白鹿扒开内裤露出尿孔 | 成年性生交大片免费看 | 99视频导航| 干操视频 | 日本美女视频韩国视频网站免费 | 日韩视频一 | 青青草原国产一区二区 | 91日本在线 | 日韩大片免费看 | 国产精品国产香蕉在线观看网 | 97热| 国产在线观看精品香蕉v区 国产在线观看a | h版欧美大片免费观看 | 韩国美女豪爽一级毛片 | 亚洲成年男人的天堂网 | 办公室大战秘书呻吟 | 4p高h三男一女 | 沉香如屑西瓜视频免费观看完整版 | www.色女人.com| 日本 片 成人 在线 日b视频免费 | 青青国产成人久久激情911 | 亚洲AV国产精品无码精 | 日本中文字幕永久在线 | 精品国产爱久久 | 四虎永久在线精品免费影视 | 日本手机在线视频 | 91传媒制片厂果冻有限公司 | 艹出白浆 | 国产成人精品免费视频软件 | 国产精品午夜久久 | 全程粗语对白视频videos | 亚洲国产精品久久久久久网站 | 欧美午夜性春猛交bbb | 午夜国产| 亚洲高清无在码在线电影 | 古装一级无遮挡毛片免费观看 | 黑人巨大爆粗亚裔女人 | 国产成人精视频在线观看免费 |