php - 使用 php 从非公共(public) html 文件夹下载文件

标签 php

我有一些文件存储在服务器上,但不在 public_html 目录中。这个想法是登录的用户可以下载文件,使用 $_SESSION 变量来检查他们是否登录,但是如果其他人使用他们的计算机,他们无法在浏览器历史记录中看到直接文件路径,即使他们这样做了它位于公共(public) html 目录之外,因此无法访问。

我知道我需要一个脚本来执行此操作,但我无法在任何地方找到如何执行此操作,如果有人能告诉我如何执行此操作,我将不胜感激。

最佳答案

您可以使用 readfile 将输出作为相关文件获取。例如:

$file = '/absolute/path/to/file.ext';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}

关于php - 使用 php 从非公共(public) html 文件夹下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911431/

相关文章:

php - 在 jQuery 中删除选定的表行

php - 使用 PHP 将我选择的所有 CSV 文件导入到 Mysql

php - Laravel 家园 : "VM not created.. moving on"

php - .env/user_vars 环境变量返回 NULL

PHP - 比较不同格式的日期

php - 如何自定义 Wordpress 中日期戳的外观?

php - 可能使用 Levenshtein 距离匹配搜索词的准确性

php - 在不知道键的情况下使用单个查询更新 MySQL 中的 100k 行

PHP 字符串中多次出现的单词

php - 将 json_encode 应用于类时如何忽略特定值