我正在尝试为我的 RaspberryPi 创建某种云。用户可以在其中登录、上传和下载他们有权访问的文件。
为了提供这种安全性,文件存储在目录“/var/www/files/”中,因此浏览器无法直接访问它们。
应通过 PHP 启动下载(检查用户权限后)。
上传文件并显示存储的文件的逻辑我已经实现了,但我很难找到如何下载文件的解决方案。
上传正在使用ajax调用,但不确定是否也可以使用该方法进行下载。
最佳答案
您可以使用PHP下载网站根目录之外的文件。这很简单:
<?php
$path = <path to the file to be downloaded>;
readfile($path);
参见:http://php.net/manual/en/function.readfile.php
确保您有权访问该文件并将此 PHP 代码放入浏览器可访问的文件中。通过一些标题,您可以使其变得更好:
<?php
$path = <path to the file to be downloaded>;
$name = 'Your download name';
$size = filesize($path);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$name);
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: '.$size);
readfile($path);
但最后却是一模一样。如果您想做一些身份验证,您可以在 PHP 中执行此操作。
关于javascript - 使用ajax下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49130352/