当前位置: 首页 > 面试题库 >

如何强制文件在PHP中下载

仲孙兴平
2023-03-14
问题内容

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

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

编辑

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


问题答案:

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

<?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输出之前。) 还要注意如果您决定基于此创建一个函数来下载任意文件,则需要-
确保您防止目录遍历(
realpath
很方便),仅在接受$ _GET或$
_POST的输入时才允许从定义的区域内进行下载,等等。



 类似资料:
  • 问题内容: 我希望在我的一个站点的每个视频下方添加“下载此文件”功能。我需要强迫用户下载文件,而不仅仅是链接到文件,因为有时这会开始在浏览器中播放文件。问题是,视频文件存储在单独的服务器上。 有什么办法可以强制用PHP下载吗? 问题答案: 您可以尝试这样的事情: 我刚刚测试了它,它对我有用。 请注意,为了能够读取远程URL,您需要启用它。

  • 问题内容: 我有图像列表,我希望每个图像都有一个“下载”链接,以便用户可以下载图像。 所以有人可以指导我如何为php中的任何文件提供下载链接吗? 编辑 我希望在单击下载链接时显示一个下载面板,但我不想导航到要在浏览器中显示的图像 问题答案: 如果要强制下载,可以使用如下所示的内容: 如果仅使用常规链接链接到此脚本,则将下载文件。 顺便说一句,上面的代码段需要在页面的开头执行(在没有任何标题或HTM

  • 问题内容: 我的服务器上有一个CSV文件。如果用户单击链接,则应下载该链接,但会在我的浏览器窗口中打开。 我的代码如下 这是我所有开发工作都在上面的普通Web服务器。 我尝试了类似的东西: 现在我文件的内容: 现在我的问题是正在下载,而不是我的CSV文件。它创建一个新文件。 问题答案: .htaccess解决方案 要强行下载服务器上的所有CSV文件,请添加.htaccess文件: PHP解决方案

  • 本文向大家介绍php强制下载文件函数,包括了php强制下载文件函数的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了php强制下载文件函数,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 伙计们,我知道有很多关于强制弹出下载对话框的话题,但是还没有一个解决方案对我有用。 我的应用程序将邮件发送到用户的电子邮件帐户,通知他们“另一个用户向他们发送了一条消息”。这些消息可能具有指向Excel文件的链接。当用户单击其GMail / Yahoo Mail / Outlook中指向该Excel文件的链接时,我希望弹出“文件保存”对话框。 问题:右键单击并在IE上执行“另存为”时,

  • 问题内容: 我希望用户能够下载服务器上的某些文件,但是当我尝试使用Internet上的许多此类示例中的任何一个时,对我来说似乎没有任何作用。我试过这样的代码: 我什至尝试使用我能找到的最基本的示例,如下所示: 测试完此功能后,我删除了所有其他代码,并使用仅包含此代码的空文件来删除由外部源创建的任何错误。 当我在控制台中查看文件时,将使用正确的标题发送文件,即 但是不会显示保存对话框。 我还尝试使用