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

Php 告诉浏览器在Codeigniter中打开或下载文件,php,codeigniter,download,mime-types,codeigniter-2,Php,Codeigniter,Download,Mime Types,Codeigniter 2,在Codeigniter中,我们可以使用下载助手中的force_download$file_name$data函数强制浏览器下载文件 但这不是我需要的,我希望Codeigniter用文件对应的MIME类型响应http头,这样浏览器可以下载或不下载文件,这取决于客户端计算机上是否有为该MIME类型注册的应用程序。如果有,该应用程序将打开该文件 有没有办法用Codeigniter做到这一点 非常感谢大家。不,使用Codeigniter无法做到这一点 一般来说,使用像PHP这样的服务器端技术,您只能将

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

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

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


非常感谢大家。

不,使用Codeigniter无法做到这一点

一般来说,使用像PHP这样的服务器端技术,您只能将内容发送到客户端,而不能直接与客户端交互。客户可以根据自己的意愿使用您发送给他们的任何内容。即使使用javascript这样的客户端工具,谢天谢地,您也只能与客户端计算机进行有限的交互。你想要做的是允许一个网站在访问时自动下载一个软件,并在客户端机器上执行它

这就是所谓的恶意软件。。。由制造者带给你的

以上是对我的直接回应

…以便浏览器可以下载或不下载该文件,这取决于客户端计算机上是否有为该MIME类型注册的应用程序(如果有),该应用程序将打开该文件。 更新

您可以通过普通的php头操作来设置mime类型。以下示例直接取自php作为第一个示例

<?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');
?>

不,你不能用Codeigniter

一般来说,使用像PHP这样的服务器端技术,您只能将内容发送到客户端,而不能直接与客户端交互。客户可以根据自己的意愿使用您发送给他们的任何内容。即使使用javascript这样的客户端工具,谢天谢地,您也只能与客户端计算机进行有限的交互。你想要做的是允许一个网站在访问时自动下载一个软件,并在客户端机器上执行它

这就是所谓的恶意软件。。。由制造者带给你的

以上是对我的直接回应

…以便浏览器可以下载或不下载该文件,这取决于客户端计算机上是否有为该MIME类型注册的应用程序(如果有),该应用程序将打开该文件。 更新

您可以通过普通的php头操作来设置mime类型。以下示例直接取自php作为第一个示例

<?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');
?>

不是真正的恶意软件,用户上传了一些文件,我把它们放在webroot之外的地方。用户只能下载他/她上载的文件。因此,我在Codeigniter中创建了一个路由,并在控制器中的相应函数中,仅当他们已登录时,我才向他们提供文件。我正在使用file_get_内容来读取文件,现在我需要一个类似force_download的函数,它告诉浏览器下载/打开文件,就像文件是从webroot提供的一样。因此,我想知道CI是否提供了这样一个函数,它可以将文件发送到客户端浏览器,并在http响应头中为我指定正确的MIME让浏览器决定如何处理它。force_download的问题是,它通过使用客户端计算机上任何应用程序通常未注册的MIME类型,强制浏览器下载我不想要的文件。我在Codeigniter中的application/config/mimes.php中创建了MIME映射数组,并结合您的php代码,它应该很容易编写一个功能,完全实现我需要的。不是真正的恶意软件,用户上传了一些文件,我把它们放在一个地方以外的webroot。用户只能下载他/她上载的文件。因此,我在Codeigniter中创建了一个路由,并在控制器中的相应函数中,仅当他们已登录时,我才向他们提供文件。我正在使用file_get_内容来读取文件,现在我需要一个类似force_download的函数,它告诉浏览器下载/打开文件,就像文件是从webroot提供的一样。因此,我想知道CI是否提供了这样一个函数,它可以将文件发送到客户端浏览器,并在http响应头中为我指定正确的MIME让浏览器决定如何处理它。force_download的问题是,它通过使用客户端计算机上任何应用程序通常未注册的MIME类型,强制浏览器下载我不想要的文件。我在Codeigniter中的application/config/mimes.php中创建了MIME映射数组,并结合您的php代码,它应该是非常容易写一个函数,完全实现我所需要的。