一尘不染

如何强制使用PHP下载文件

html

我有图像列表,我希望每个图像都有一个“下载”链接,以便用户可以下载图像。

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

编辑

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


阅读 290

收藏
2020-05-10

共1个答案

一尘不染

如果要强制下载,可以使用如下所示的内容:

<?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方便),仅允许在定义的区域内进行下载,等等。

2020-05-10