Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
在PHP提供的浏览器中打开文件_Php_File_Browser_Mime Types_Userfrosting - Fatal编程技术网

在PHP提供的浏览器中打开文件

在PHP提供的浏览器中打开文件,php,file,browser,mime-types,userfrosting,Php,File,Browser,Mime Types,Userfrosting,这个简单的问题,可能被问了一百万次,但我已经搜索过了,现在还没找到解决办法 我在UserFrosting框架中有一个PHP脚本,它通过用户的浏览器向用户提供一个文件。如果他们选择“打开”而不是“下载”,我希望文件在他们的浏览器中打开 问题是,只有文本文件才能正常打开。其他任何东西(迄今为止测试的PDF和JPG)都只是以ASCII/乱码的页面打开,而不是被解释为PDF或图像 以下是我使用的代码: header('Content-Type: '. $mime); header('Content-Le

这个简单的问题,可能被问了一百万次,但我已经搜索过了,现在还没找到解决办法

我在UserFrosting框架中有一个PHP脚本,它通过用户的浏览器向用户提供一个文件。如果他们选择“打开”而不是“下载”,我希望文件在他们的浏览器中打开

问题是,只有文本文件才能正常打开。其他任何东西(迄今为止测试的PDF和JPG)都只是以ASCII/乱码的页面打开,而不是被解释为PDF或图像

以下是我使用的代码:

header('Content-Type: '. $mime);
header('Content-Length: ' . filesize($diskname));
header('Content-Disposition: inline; filename=' . $savename);
return readfile($diskname);
$mime
是通过函数设置的文件的mime类型,因此对于我目前试图查看的文件,可以是
application/pdf
image/jpeg

有人知道为什么文件不能正常打开吗

更新
检查了响应标题后,我得到了
text/html的内容类型;charset=UTF-8
而不是根据我使用的代码设置的
application/jpeg
application/pdf
。我想知道这是否是一个用户结霜问题?

因为我不能评论声誉的原因,所以我必须回答,即使我不能100%确定这是你的问题

问题是,有时候PHP文件会带来很多麻烦

 <--- this little empty line
<?
code goes here
?>
 <--- or this one

好的,问题解决了。正如我所怀疑的,这与UserFrosting框架有关,或者更具体地说,与Slim有关

使用
header('Content-Type:image/jpeg')代替设置标题,我本应执行以下操作:

$this->_app->response->headers->set('Content-Type', $mime);

问题已解决。:)

“可能是application/pdf或image/jpeg”-您检查过服务器实际发送的是什么吗?根据文件的不同,$mime肯定被设置为application/pdf或image/jpeg。虽然我的浏览器不是很好(使用Firefox),但文件正在一个新选项卡中“打开”,并且出现了一个错误,提示“HTML文档的字符编码未声明”。我假设内容类型不知何故丢失了?打开开发者工具。查看网络选项卡。加载页面。它将向您显示所有请求和响应,并让您检查标题和原始内容;charset=UTF-8
-这显然不是我在发送文件之前设置的。Markus Laubenthal可能会发现一些空白的地方吗?我在php.ini中将错误报告设置为
E_ALL
,因此我假设如果生成警告,我应该会看到警告,但我在错误日志中什么也没有得到。尽管标题的其余部分完好无损-只是内容类型发生了更改..:/嗯,看看这个:。它为内容类型的相同问题提供了一些更深入的信息。我很确定在您的某个文件的任何位置都必须有一些输出。仅供参考:。