告诉浏览器在Codeigniter中打开或下载文件

时间:2011-02-15 04:05:45

标签: php codeigniter download mime-types codeigniter-2

在Codeigniter中,我们可以使用下载助手中的force_download($file_name,$data)函数强制浏览器下载文件。

但这不是我需要的,我希望Codeigniter以文件对应的MIME类型响应http标头,以便浏览器可能会也可能不会下载文件,具体取决于是否有注册的应用程序对于客户端计算机上的MIME类型(如果有的话,该应用程序将打开该文件)。

有没有办法用Codeigniter做到这一点?

非常感谢大家。

1 个答案:

答案 0 :(得分:6)

不,你不能用Codeigniter做到这一点。

一般来说,使用像PHP这样的服务器端技术,您只能向客户端发送内容,而不能直接与客户端交互。客户可以根据您发送的任何内容做他们想做的事情。即使使用像javascript这样的客户端工具,(幸运的是),您只能与客户端计算机进行有限的交互。你想要做的是允许一个网站(自动)访问,下载一个软件,并在客户端机器上执行...

这就是所谓的恶意软件......(由ActiveX的制造商提供给你)

以上是对

的直接回应
“...这样浏览器可能会也可能不会下载文件,具体取决于客户端计算机上是否有为该MIME类型注册的应用程序(如果有的话,该应用程序将打开该文件)。 / BLOCKQUOTE>

<强>更新

您可以通过纯PHP标头操作设置mime类型。以下示例直接来自php header() documentation作为第一个示例。

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>