javascript - 使用ajax下载文件

标签 javascript php ajax file download

我正在尝试为我的 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/

相关文章:

javascript - NightmareJS .click() 方法 - 选择器问题

javascript cleartimeout()问题

javascript - 网站无限滚动 - 在浏览器中用户 'go back' 之后返回滚动位置

javascript - 数据表 - 更新属性数据

javascript - parrot 2.0 ardrone 上的 NavData,如何添加延迟并构建实时图?

php - Yii2一次保存多条数据记录

javascript - 如何在 JQuery 中重复相同的代码,并为每个代码附加不同的编号?

javascript - PHP 和 Ajax : manage list update

javascript - 如何使用ajax从php while循环发布数据

ajax - Apache-Shiro : User authenticates within AJAX, 登录后如何恢复 GET-Variables?