php - 如何在PHP中强制下载文件

标签 php html download

我有图片列表,我想要每个图片都有一个“下载”链接,以便用户可以下载图片。

那么有人可以指导我如何在 php 中为任何文件提供下载链接吗?

EDIT

我希望在单击下载链接时显示下载面板我不想导航到要在浏览器上显示的图像

最佳答案

如果你想强制下载,你可以使用类似下面的东西:

<?php
    // Fetch the file info.
    $filePath = '/path/to/file/on/disk.jpg';

    if(file_exists($filePath)) {
        $fileName = basename($filePath);
        $fileSize = filesize($filePath);

        // Output headers.
        header("Cache-Control: private");
        header("Content-Type: application/stream");
        header("Content-Length: ".$fileSize);
        header("Content-Disposition: attachment; filename=".$fileName);

        // Output file.
        readfile ($filePath);                   
        exit();
    }
    else {
        die('The provided file path is not valid.');
    }
?>

如果您只是使用普通链接链接到此脚本,文件将被下载。

顺便说一句,上面的代码片段需要在页面的开头执行(在任何标题或 HTML 输出发生之前。)如果您决定基于此创建一个用于下载任意文件的函数,也要小心- 如果您接受来自 $_GET 或 $_POST 的输入,您需要确保防止目录遍历(realpath 很方便),只允许从定义的区域内下载等。

关于php - 如何在PHP中强制下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3476362/

相关文章:

java - 从零到 Java > Spring > Hibernate for web

php - 将 UNIX 时间戳转换为格式化的日期字符串

html - 证明内容 : space-between works incorrect

javascript - Bootstrap 4 Scrollspy 未在滚动条上指示

php - 带有区域限制的YouTube流fmt_stream_map错误

excel - 使用curl下载excel文件

php - PHP可以用于Android应用程序开发吗?

php - Google Sheets PHP API - 添加多个选项卡时出现问题

html - CSS HTML 我的文本对齐和我的显示内联 block 不起作用

react-native - 下载文件(使用 expo)——为什么这么难?