我尝试将本地硬盘上文件夹的内容显示为网络浏览器中的链接。 这就是我获取文件夹内容的方式
$dir = scandir($path);
foreach($dir as $token)
{
if(($token != ".") && ($token != ".."))
{
if(is_dir($path.'/'.$token))
{
$folders[] = $token;
}
else
{
$files[] = $token;
}
}
}
foreach($folders as $folder)
{
$newpath = $path.'/'.$folder;
echo "<a href = tema2.php?cale=$newpath> [ $folder ] </a>" . "<br>";
}
foreach($files as $file)
{
$newpath = $path.'/'.$file;
echo "<a href = file:///$newpath> $file </a>" . "<br>";
}
一切正常,除了指向按下时不执行任何操作的文件的链接。在我的Web浏览器中显示的链接如下所示:&#34; file:/// C:/folder/test.txt"。试过这是Firefox,Chrome和IE。
答案 0 :(得分:3)
如果该文件超出了Web服务器文件夹的范围,则无法访问该文件以进行传送。
您可以创建文件处理程序来传递文件:
所以改变echo "<a href = file:///$newpath> $file </a>" . "<br>";
到echo "<a href = \"fileHandler.php?file=$file\"" . "<br>";
并将fileHandler.php创建为:
<?php
$file = $_GET['file'];
header('content-type:application/'.end(explode('.',$file)));
Header("Content-Disposition: attachment; filename=" . $file); //to set download filename
exit(file_get_contents($file));
?>
或绕过Web服务器并直接链接到文件(这只能通过LAN或VPN工作)
所以改变echo "<a href = file:///$newpath> $file </a>" . "<br>";
到echo "<a href ='$_SERVER[HTTP_HOST]/$newpath/$file'>$file</a><br />"
答案 1 :(得分:1)
这不起作用
你无法链接Apache的htdocs文件夹
之外的文件2个选项:
1)将你需要的文件移到htdocs
2)使用虚拟主机/ DocumentRoot
答案 2 :(得分:0)
我通过在apache文档文件夹中创建指向包含我要共享内容的文件夹的符号链接来规避此问题。所以说我想从“ Z:/ Media /”提供文件,我在“ D:/ Server / HTTP /”(我的Apache文档根文件夹)内创建一个名为“媒体”的符号链接,然后就可以提供文件了从那里开始,例如“ /Media/Movies/Fargo.mp4”。