当前位置: 首页 > 知识库问答 >
问题:

PHP:从服务器下载时保持相同的文件名

宋臻
2023-03-14

我正在通过php脚本下载一个文件,除了一个丑陋的事实之外,一切都工作得很完美。下载的文件保持相同的url,并附有原始名称。如何在下载文件时保持相同的文件名?

http://bachday.com/index.php?page=custom&file=mmailer/download.php?mfile=sample.docx
if (isset($_GET['mfile'])) {
    $file = $_SERVER['DOCUMENT_ROOT'].'/oc-content/plugins/mmailer/pfile/'.$_GET['mfile'];

    if (file_exists($file) && is_readable($file) && preg_match('/\.docx$/',$file)) {
        header('Content-Type: application/docx');
    header("Content-Disposition: attachment; filename=\"$file\"");
    readfile($file);
    /*
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    echo (readfile($file));*/


    }
    else
    {
        header("HTTP/1.0 404 Not Found");
        echo "Error 404: File Not Found: 
$file"; }

共有1个答案

宿景曜
2023-03-14

header('content-disposition:attachment;filename=“name_of_file_here'')就能做到这一点。您将文件的完整路径作为头(“content-disposition:attachment;filename=\”$file\“”);传递,因为$file包含完整路径。相反,只需发送文件的名称。

 类似资料:
  • 问题内容: 我有一个URL,用于保存我的工作中的一些项目,它们大部分是MDB文件,但也有一些JPG和PDF。 我需要做的是列出该目录中的每个文件(已完成)并为用户提供下载它的选项。 使用PHP如何实现? 问题答案: 要读取目录内容,可以使用readdir()并使用脚本(在我的示例中)来下载文件 在其中,您可以强制浏览器发送下载数据,并使用basename()来确保客户端不会传递其他文件名,例如

  • 我正试图下载一些公共数据文件。我通过screensrap获取指向文件的链接,这些文件看起来都是这样的: 我在Requests library网站上找不到任何文档。

  • 我创建了一个web应用程序,它允许其用户从运行应用程序的同一服务器下载文件。然而,我不能让它按照我希望的方式工作,现在我甚至不确定这是否可能。

  • 问题内容: 我有一个后端API,它在我们调用它时基本上会下载一个模板。我在html页面上提供了href,因此,每当有人单击该href时,它就会调用后端API,并且应该下载该文件。 但是该文件未下载。 我正在使用React。如果我只是从浏览器访问后端,则文件将被下载,但是如果我从react调用,则不会。 有线索吗? 反应代码: 后端API代码: 问题答案: JS中的请求与访问浏览器中的URL不同。您

  • 问题内容: 在Windows中使用Java代码,我需要从放置在服务器中的目录中下载几个文件。服务器中的那些文件是分别生成的。所以我不知道这些文件的名称。有什么方法可以使用JAVA下载它并将其保存在特定的文件夹中。 我正在使用apache tomcat。 我阅读了与Java文件下载相关的所有其他线程。但是他们都不满足我的要求。 问题答案: 使用和分类。