測試了一下,ie總是使用utf8來訪問中文 路徑的檔案,這時,空間會提示找不到檔案.
現在使用變通方法後,可以直接在ie上使用中文路徑檔案了
test.php
放到目錄下
此目錄中有一中文目錄,在這中文目錄中有中文名字mp3
開啟test.php後,發現點擊 中文路徑.xx.mp3時可以下載了.而不是提示找不到檔案.
<?php</p><p>header('Content-Type: text/html;charset=gb2312');<br />$p_f = dirname(_FILE_);<br />echo getPath($p_f.'/中文');</p><p>function getPath($path )<br />{<br /> //$path = code2code($_REQUEST["scanfpath"], $GLOBALS["sysCode"], mb_detect_encoding($_REQUEST["scanfpath"]));<br /> echo $path .'下的目錄<BR>';<br /> if (false == file_exists($path))<br /> {<br /> return "列舉目錄內容出錯:[". $path . "]檔案夾不存在.";<br /> }else if (false == ($pathA = scandir($path)))<br /> {<br /> return "擷取[". $path . "]的子目錄和檔案失敗.";<br /> }</p><p> $folderText = "";<br /> $fileText = "";</p><p> for ($forI = 0; $forI < count($pathA); $forI++)<br /> {<br /> if (($pathA[$forI] <> ".") && ($pathA[$forI] <> ".."))<br /> {<br /> if (is_dir($path . $pathA[$forI]))<br /> {//檔案夾<br /> $folderText .= $pathA[$forI].'|';<br /> }else<br /> {//檔案<br /> $fileText .= '<a href="s_f.php?path='.$path.'/'.$pathA[$forI].'" mce_href="s_f.php?path='.$path.'/'.$pathA[$forI].'" target=_blank>'.$path.'/'.$pathA[$forI].'</a>|';<br /> }<br /> }<br /> }</p><p> return $folderText . $fileText;<br />}<br />?><br />
s_f.php
發送中文檔案的php
<?php<br />$path = $_GET['path'];<br />if (trim($path)=="")<br />{<br /> exit("no empty path.");<br />}</p><p>if (!file_exists($path))<br />{<br /> exit("can't found path.");<br />}</p><p>header("Content-Disposition:attachment; filename=$path");<br />header("Content-Transfer-Encoding: binary");<br />header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1<br />header("Expires: Sat, 26 Jul 2009 05:00:00 GMT"); // Date in the past<br />header('Content-type: audio/mp3');<br />header('Content-length: ' . filesize($path));</p><p>print file_get_contents($path);</p><p>?><br />