【问题标题】:How to set Content-type in php on mac?如何在mac上的php中设置Content-type?
【发布时间】:2017-10-04 15:10:18
【问题描述】:

我有问题。这是我的php代码:

include "connection.php";

$patternJPG = '/.pdf$/i';
$gfs = $db->getGridFS();
$collection=$db->Children;
$selected = array('_id'=> new MongoId($_GET['id']));
$cursor=$collection->find($selected);
foreach($cursor as $b){
        $id1 = $b["photoID"];

        $criteria = array("_id" => New MongoId ($id1));
        $nameOriginal = $gfs->findOne($criteria)->file['filename'];
        if(preg_match($patternJPG, $nameOriginal)){
        $row = $gfs->findOne($criteria)->getBytes();
        $mimeType = 'Content-type: application/pdf';
        header("Content-Length: " . strlen($row)); 
        header($mimeType); 
        ob_end_clean(); 
        flush();
        echo($row);
        }

        }

此代码在 Windows 平台上确实有效。当我尝试在 mac 上运行该代码时,它不起作用。我认为代码应该在所有平台上运行。因为一直以来,我从来没有发现过这样的问题。我有适用于 Windows 的代码,该代码也适用于 mac。请有人帮我解决这个问题。

【问题讨论】:

  • 尚不清楚究竟是什么不起作用。是不是当您从 Safari 打开 URL 时,您无法下载 PDF 文件?它在 Windows 上是如何工作的?
  • 它在 windows 上工作,例如显示 pdf,并且有下载、打印等工具。但是,它在 mac 上不起作用,因为它只显示抽象字母,如 64 位编码也许吧。
  • Mac上有PDF插件吗?
  • 我没有 pdf 插件。 Windows 上不需要任何东西。我认为在 mac 上会自动工作?或者如果你想在 mac 浏览器上显示 pdf,需要 pdf 插件? @JeroenHeier
  • 它可以在 Safari 上运行吗?标头是否被传递到浏览器?

标签: php mongodb macos content-type


【解决方案1】:

similar issue有一个帖子

嗯,Chrome 旨在成为一种基本浏览器,可通过扩展程序根据您的需求进行定制。我们的 Web App Store 提供了一系列免费、方便的花花公子扩展,可让您直接在浏览器中查看 PDF。

请尝试安装插件以在 MacOS 上查看 chrome 中的 PDF 文件

https://chrome.google.com/webstore/search/pdf%20viewer?hl=en

此外,确保服务器端代码正确的一种方法是将输出保存为扩展名为 .pdf 的文件,然后尝试打开它以确保它是正确的 PDF。

如果需要强制 Chrome 下载文件而不是查看文件,以便系统 PDF 查看器可以查看文件。您可以按照此question 使用标题Content-Disposition: attachment

【讨论】:

  • 报告称 Adob​​e Acrobat for Chrome 尚不支持 Mac。 :(
  • 更新链接以显示 pdf 扩展名。另一方面,您是否尝试过保存文件并在 MacOS 上使用 pdf 查看器查看?
  • 您可以强制下载文件而不是查看它,然后您可以使用系统查看器查看它。
  • 如何在 adobe 不工作时尝试保存 :( 这个浏览器仍然显示抽象字母表。有没有办法解决这个问题?
猜你喜欢
  • 2020-09-30
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多