使用ajax下载文件

时间:2018-03-06 12:01:38

标签: javascript php ajax file download

我试图为我的RaspberryPi创建某种云。用户可以登录,上传和下载他们有权访问的文件。

为了提供这种安全性,文件存储在目录“/ var / www / files /”中,因此在某个地方浏览器无法直接访问它们。

通过PHP,应启动下载(在检查用户权限之后)。

上传文件的逻辑,并显示我已经实现的存储文件,但我很难找到如何下载文件的解决方案。

上传正在使用ajax调用,不确定是否可以使用该方法进行下载。

1 个答案:

答案 0 :(得分:1)

您可以使用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中执行此操作。