php下载jpg文件为空解决方法

php教程下载jpg文件为空解决方法

jpg格式的文件,点击在浏览器中打开显示为红叉

代码如下:

$filetype = "image/pjpeg";
header("content-type: {$filetype}");
   

header("expires: 0");
header("cache-control: must-revalidate, post-check=0,pre-check=0");
header("pragma: public");

$file_content = file_get_contents($filepath);
echo $file_content;
exit; 

首先排查初始文件是否有问题

1、echo $filepath;

2、根据输出的文件完整路径,打开文件,没有问题

排除原始文件的嫌疑

然后排查在文件读取过程中是否存在问题

1、$filetype = "application/jpeg";

 header("content-disposition: attachment; filename="{$headername}";");

将文件强制下载

下载下来发现文件大小与原始文件一致,但是打开后还是为空,可以确定在文件输出的时候出现了问题

 使用file_put_contents("d:aaa.jpg",file_get_contents($filepath)),将文件保存到服务器,保存的文件可以打开

这时我怀疑在文件输出到客户端的时候编码出了问题

经过一段时间的折腾,终于把问题解决,代码如下:

header("content-type: {$filetype}");
header("expires: 0");
header("cache-control: must-revalidate, post-check=0,pre-check=0");
header("pragma: public");
//此处增加编码设定
header('content-transfer-encoding: binary');
//此处最重要,目的是要清空输出的字节
ob_clean();
//此处等于下面被注射的两行,可节省代码
readfile($filepath);

//$file_content = file_get_contents($filepath);
//echo $file_content;  
exit; 

此处附ob_clean()的解释:

clean (erase) the output buffer

我理解ob_clean()等于.net中的response.clear();

时间: 2024-09-28 14:51:15

php下载jpg文件为空解决方法的相关文章

手机用safari无法下载此文件原因及解决方法详解

ipad或者iphone上网,不管下载什么都提示safari无法下载此文件要怎么解决呢?其实原因是因为苹果设备自带浏览器safari不支持下载. 手机用safari无法下载此文件原因及解决方法 : 如果你要下载到AppStore里面买个iDownload软件或者越狱在cydia上安装个safari download plugin插件就可以下载了.

win8使用IE浏览器查看网页会出现自动下载HTML文件对话框的解决方法

  win8使用IE浏览器查看网页会出现自动下载HTML文件对话框的解决方法.大家都知道windows操作系统内置IE浏览器,Win8系统中很多用户会使用IE浏览器查看网页,通常网页会有很多的超链接可以点击进入下一个网页,不过有的Win8系统用户反馈点击后出现自动下载HTML文件的对话框,而不是打开网页,那么遇到这样的情况如何解决呢?本文教程小编分享几种解决方法,有需要的用户可以往下学习. 方法一: 1.按下WIN+R调出运行然后输入: regsvr32 msxml3.dll 回车; 2.重新打

PHP附件下载中文名称乱码的解决方法_php技巧

本文实例讲述了PHP附件下载中文名称乱码的解决方法.分享给大家供大家参考,具体如下: PHP中,如果要下载的文件名称为中文,则会出现文件标题乱码. 此时就需要对标题进行编码,也就是说先进性urlencode,然后再放入header,然后问题就解决了. $filename = urlencode("下载文档"); header ( "Content-disposition: attachment; filename=$filename.xls" ); 网上说,在RFC

Win7系统RM视频文件损坏的解决方法

  大家现在观看的网络视频基本上都是以RM格式或RMVB格式存在,我们的win7系统电脑在使用的过程中有可能会遇到视频文件被损坏的情况,那么出现这样的情况大家的视频文件就无法观看,一些不知道如何解决的朋友就会比较着急,那么遇到这样的情况该怎么办呢,小编马上给大家说说这个解决方法吧! Win7系统RM视频文件损坏的解决方法如下: 1.要是大家在播放文件的时候被卡主,那么就可能是我们的RM视频被损坏了,大家直接跳过损坏的部分就可以了. 解决方法:大家可以去下载软件"rmfixit"对我们的

ftp方式下载,文件名包含??导致下载的文件为空

问题描述 ftp方式下载,文件名包含??导致下载的文件为空 使用FTPClient类下载ftp文件,ftp服务器上的文件名fileName包含??字符,如 ftp_扫描[托管系统(??...]_2015-04-14_16-42-20.xml调试代码,发现程序读取的文件名为 ftp_扫描[托管系统(??...]_2015-04-14_16-42-20.xml.登录ftp方法: FTPClient ftpClient = new FTPClient(); ftpClient.setControlEn

从性能方面考虑PHP下载远程文件的3种方法_php实例

今天在做导出Excel的时候,总是要测试导出的Excel文件,频繁的下载和打开,很麻烦就想着写段代码一气呵成  服务端导出Excel==>下载Excel文件到本地==>并打开的操作. 这里摘出PHP下载远端文件的方案,以备忘.其中第3种方法考虑到文件过大时的性能问题. 3种方案: -rw-rw-r-- 1 liuyuan liuyuan 470 Feb 20 18:12 test1_fopen.php -rw-rw-r-- 1 liuyuan liuyuan 541 Feb 20 18:06

【POI】对于POI无法处理超大xls等文件,官方解决方法【已解决】【多线程提升速率待定】

本次使用POI处理xlsx文件,莫名的遇到了一个无法逾越的问题. 总共71个xlsx文件,单个文件最大达到50M以上,71个xls文件摆在那里就有3-4G的大小.  在起始处理的时候,发现原本适用于正常大小的POI处理xls程序竟然屡次的报错GC outofmemory 的内存移除的问题. [当前状况] ①一个50M大小的xlsx文件,使用压缩文件打开,可以看到xml文件达到900M以上 ②一个50M大小以上的xlsx文件,单个工作簿,行数平均在15W行---40W之间,列数在64列左右 ③单方

win7无法共享xp文件夹的解决方法

  虽说win7系统目前有绝大部分的用户在使用,但对一些公司企业.事业单位还是普遍的存在着winXP系统,那么对于这些xp用户也遇到的问题越来越多,首先winxp停止更新,面临着黑客的入侵,其次一些系统的兼容性也会随着win7系统的更新而受到影响,这么最近有朋友向本站反映,在公司中win7电脑无法共享winXP中的文件,那么对于出现此问题我们应该如何解决呢?下面看河东小编就大家带来的解决方法! win7无法共享xp文件夹的解决方法 1.首先,我们点击打开win7旗舰版电脑的开始菜单,然后从开始菜

CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法_php实例

本文实例讲述了CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法.分享给大家供大家参考.具体如下: 因为某网站看图比较坑爹,要一页一页的翻页....所以....就写了这么个东西 (我是产品不是程序员)运行速度简直无法忍受,而且经常会有错误发生,所以希望大家帮忙改进(PHP). 当然也欢迎看到PYTHON,GOLANG的版本~~^_^ 1. controllers: $this->load->helper('date'); $this->load->helper('p