Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不强制下载的情况下从CodeIgniter输出文件?_Codeigniter_Header_Download - Fatal编程技术网

如何在不强制下载的情况下从CodeIgniter输出文件?

如何在不强制下载的情况下从CodeIgniter输出文件?,codeigniter,header,download,Codeigniter,Header,Download,对于CodeIgniter强制下载文件,似乎有很多解决方案,但我找不到任何不强制下载就输出文件的解决方案 在我的例子中,我通过一个控制器(最初由Apache直接处理)重定向了文件下载,以便记录统计数据。我在下载助手中使用了CodeIgniter force_下载功能。但是,我现在收到一个请求,要求在浏览器中打开部分或所有文件,这样就不会强制保存到文件中,所以我想知道如何操作 据推测,这主要是输出正确的头的问题,尽管我不知道不同的文件类型是否需要不同的头。有人举过一个例子吗?您只需指定好的mime

对于CodeIgniter强制下载文件,似乎有很多解决方案,但我找不到任何不强制下载就输出文件的解决方案

在我的例子中,我通过一个控制器(最初由Apache直接处理)重定向了文件下载,以便记录统计数据。我在下载助手中使用了CodeIgniter force_下载功能。但是,我现在收到一个请求,要求在浏览器中打开部分或所有文件,这样就不会强制保存到文件中,所以我想知道如何操作


据推测,这主要是输出正确的头的问题,尽管我不知道不同的文件类型是否需要不同的头。有人举过一个例子吗?

您只需指定好的mime类型并省略
内容处置:附件

因此,如果浏览器可以渲染它,它将被显示。如果不能,它将被下载

例如:

$file = 'images/smileys/panda.gif';

if (file_exists($file)) 
{
    $finfo  = new finfo(FILEINFO_MIME);

    header('Content-Description: File Transfer');
    header('Content-Type: '.$finfo->file($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

您只需指定好的mime类型并省略
内容处置:附件

因此,如果浏览器可以渲染它,它将被显示。如果不能,它将被下载

例如:

$file = 'images/smileys/panda.gif';

if (file_exists($file)) 
{
    $finfo  = new finfo(FILEINFO_MIME);

    header('Content-Description: File Transfer');
    header('Content-Type: '.$finfo->file($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

应能在浏览器中打开所有文件
。但是pdf/excel/doc的格式是什么?
所有文件都应该可以在浏览器中打开
。但是pdf/excel/doc是哪种格式呢?我在这一过程中发现了两件事:不要将内容类型放在引号中,但是如果指定文件名,请将其放在引号中,否则文件名中的逗号将导致重复的标题错误。如果触发下载,可以如下指定默认文件名:header('Content-Disposition:inline;filename=“July Report.pdf”);在此过程中我发现了两件事:不要将内容类型放在引号中,但如果指定文件名,请将其放在引号中,否则文件名中的逗号将导致重复的标题错误。如果触发下载,可以如下指定默认文件名:header('Content-Disposition:inline;filename=“July Report.pdf”);