通过http从连接到服务器的NAS下载文件

时间:2017-12-09 16:44:54

标签: php nas

我有很多文件存储在NAS中。 NAS作为网络驱动器连接到服务器(假设它在Y://上)。

我使用xampp来提供我在php中构建的应用程序。该应用程序旨在为用户提供从NAS下载文件,直接通过http而不是ftp。

我可以从NAS设置文件,因此可以使用http URL下载,例如example.com/files/the-file.zip?

xampp位于C://目录

注意:xampp htdocs已设置为由域访问。所以它不是域名指向问题

1 个答案:

答案 0 :(得分:0)

您可以通过PHP尝试:

<?php
$downloadFolder = 'Y:/';

$fileName = $downloadFolder . $_GET['file'];
$sanitizedFileName = realpath($fileName);

if($fileName !== $sanitizedFileName) {
  throw new RuntimeException('Someone tried to escape');
}

// As seen in http://php.net/readfile:
if (file_exists($fileName)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($fileName).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($fileName));
    readfile($fileName);
    exit;
}

或者找到一种通过.htaccess运行所有内容的方法,但这可能会减少对安全处理的控制(可能,您不想提供来自其他目录或其他驱动器的文件)