在PHP中引用外部驱动器

时间:2011-10-22 18:26:07

标签: php wamp

好的,所以我正在尝试开始托管我自己的文件共享网站,我目前正在使用WAMP服务器具有apache,PHP,mysql等服务器属性。我的根文件夹位于2TB硬盘中,我想列出另一个硬盘中的文件夹/文件。但是当我使用dir函数时,它不会链接到它只列出它们的实际文件。我想允许人们将我的硬盘中的文件下载到客户端计算机。关于如何解决这个问题并链接到实际文件的任何想法?

2 个答案:

答案 0 :(得分:0)

您无法直接链接到您网站中没有的文件。

您可以做的是让所有链接都指向一个下载脚本,该脚本带有一个指向该文件的参数。然后该脚本可以使其在内存中工作。

这是我在网上找到的一个例子:
http://www.finalwebsites.com/forums/topic/php-file-download

// place this code inside a php file and call it f.e. "download.php"
$path = $_SERVER['DOCUMENT_ROOT'] . "/path2file/"; // change the path to fit your websites document structure
$fullPath = $path . $_GET['download_file'];

if ($fd = fopen ($fullPath, "r")) 
{
    $fsize      = filesize($fullPath);
    $path_parts = pathinfo($fullPath);
    $ext        = strtolower($path_parts["extension"]);

    switch ($ext) 
    {
        case "pdf":
            header("Content-type: application/pdf"); // add here more headers for diff. extensions
            header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
            break;

        default:
            header("Content-type: application/octet-stream");
            header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
            break;
    }

    header("Content-length: $fsize");
    header("Cache-control: private"); //use this to open files directly

    while(!feof($fd)) 
    {
        $buffer = fread($fd, 2048);
        echo $buffer;
    }
}
fclose ($fd);
exit;

// example: place this kind of link into the document where the file download is offered:
// <a href="download.php?download_file=some_file.pdf">Download here</a>

答案 1 :(得分:0)

在linux中,我会创建一个从外部硬盘驱动器到webroot文件夹的符号链接,但在windows下看起来你需要创建一个联结目录。

阅读本文,它解释了如何创建它。

http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/

您的目录结构应该看起来像这样

webroot
|- php files
|- externalfiles (dir junction to ext hard drive)
   |- sharedfile1 
   |- sharedfile2