小弟寫了一個搜尋資料夾內檔案列表並做超連結的功能
但是為什麼在指定資料夾時,使用"絕對路徑"與"相對路徑"得到的路徑屬性會不一樣
絕對路徑:會是file模式
相對路徑:會是http模式
導致我網頁要開啟他會呈現不同結果
(因為我要跨磁碟機搜尋,所以我需要用絕對路徑指向http模式)
以下是我的程式寫法:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>無標題文件</title>
</head>
<body>
<?php
header("content-type:text/html; charset=utf-8");
$FileDir = '../'; //相對路徑指定方式
//$FileDir = 'C:/PHP/'; //絕對路徑指定方式
$FilePDF=glob("$FileDir/*.*"); //搜尋檔案
foreach ($FilePDF as $i =>$value){
$filename = iconv("big5", "UTF-8", $value);
$ext = (explode('/', $filename));
$file_ext = end($ext);
echo '<a href="'.$filename.'" target=new>'.$file_ext.'</a>';
echo "<br>";
}
?>
</body>
</html>
過了一個年
還是不考慮使用資料庫嗎?
先說明一下, 你所講的屬性 http/file 其實應該稱之為通訊協定.
你寫的檔案搜尋器如果使用 file:// 開頭的本機路徑的存取方式, 將只能運作你程式運作的那台電腦上面, 因為 file:// 是瀏覽器直接存取本機的各個磁碟機, 所以不同台電腦的本機磁碟機自然都是不一樣的內容(網路共享磁碟可能例外)
如果你是用 http:// 相對路徑的時候, 瀏覽器是經由的Web Server存取Web Server那台電腦的本機檔案, 而不是直接透過瀏覽器存取本機的檔案. 這產生了一個很大的不同, 也就是任何一台可憐得到你寫的php網頁的電腦都能看得到你這一台伺服器超連結連結的檔案.
大部份時候我們在寫php網頁是為了讓許多台電腦連到這台電腦都能看到需要的結果, 而不是只有運作的電腦本身自己能用就好, 如果你希望讓別台電腦也能正常使用這個php網頁搜尋到的檔案, 你要重新考慮怎麼做, 因為你必須放棄使用 file:// 這種不透過 Web Server 存取檔案的方法