【问题标题】:Viewing a file when clicked not downloaded? [duplicate]单击时查看文件未下载? [复制]
【发布时间】:2020-01-03 08:53:09
【问题描述】:

当我进行 Google 搜索时,我发现了大量关于单击时下载文件所需的代码的回复,而且效果很好。我正在寻找的是,当我单击链接时,它只会在浏览器中打开文件,而不是提示下载文件。这是下载文件的工作代码:

$file = $invoice_dir . '/test.xlsx';

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;

我怎样才能让它打开而不是使用我的本地软件?这是一个 XLSX Office 类型的文件,不是纯文本。我尝试了 include() 并输出乱码。

【问题讨论】:

  • XLSX 无法在浏览器中播放。您需要解析它并以浏览器可以播放的格式提供它。
  • 我不想在浏览器中显示它。我希望它在我的计算机上打开我的 Office 程序,而不提示先下载它。如果我直接点击文件,它会这样做,但出于安全原因,我不希望人们知道该文件的位置,所以我使用 php 文件作为重定向。几年前,我可以用一个 MP3 文件来做到这一点,你点击它,它就开始在他们计算机上的音乐播放器上流式传输。如果我没记错的话,标题必须不同才能导致
  • 我将:“application/octet-stream”更改为:“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”,除非我需要做其他事情,否则它没有改变跨度>

标签: php


【解决方案1】:

您只需要像这样在 href 中打开文件

<a href"http://www.yourdomain.com/index.php?file=file.pdf">View File</a>

如果您想在新的浏览器选项卡中打开它,那么

<a href"http://www.yourdomain.com/index.php?file=file.pdf" target="_blank">show file</a>

【讨论】:

    【解决方案2】:

    添加此代码

    header("Content-type: application/vnd-ms-excel");
    

    【讨论】:

    • 我也试过了,还是可以下载
    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多