php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)_php实例

在做PHP程序时,需要使用PHP做的文件下载

那做就做呗把代码复制过来改了一改。

很多效果也出来了

那么点击下载后,恩,本以为搞定了文件下载,谁知道,图片打开的时候提示文件损坏,这我就观察了文件的大小。似乎真是多了 1KB左右。

使用PS打开,恩,提示了损坏,不过图象可以出来。

那么我就认为是 那多出来的 1kb的问题了。

然后,我把一个txt上传上去,然后下载.

果然发现,文件的前面以及后面,都多了几个 字符。

那我就在想应该怎么去掉啊.各种百度,谷歌,上论坛提问.

最后,经过我一个多小时的搜索,终于找到了解决办法.

代码如下

public function download()
{
  $upload=M('upload');
  $data=$upload->find($_GET['id']);

  if(empty($data)){
    header('HTTP/1.0 404 Not Found');
    header('Location: .');
  }else{

  $path='./public/Uploads/'.$data['savename'];

  header("Content-Type:".$data['type']);

  header('Content-Disposition: attachment; filename="'.$data['name'].'"');

  header('Content-Length:'.$data['size']);

  ob_clean();
  flush();

  readfile($path);

  }
}

注意:

ob_clean();
flush();这个是关键哦。用了这两函数,搞定,图片正常打开,文字也不乱码。

以上这篇php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php文件出现乱码
xls文件损坏打开乱码、excel文件损坏乱码、word文件损坏变成乱码、word损坏 乱码 复原、word损坏乱码修复工具,以便于您获取更多的相关知识。

时间: 2024-12-23 18:40:39

php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)_php实例的相关文章

彻底解决中文名文件下载和下载文件内容乱码问题

解决|问题|下载|中文 之前,写过一个Download.jsp文件,可以解决下载文件乱码问题(诸如:DOC,XSL文件等等).后来发现,遇到中文名的文件的时候,文件下载将会报错~~~~今天,通过改写原Download.jsp文件已经彻底解决了这个问题~现在,把一整套的文件上传下载的方法给贴出来~~~以便大家借鉴!~!~!~!~!  作者:古埃及法老---------------------------------------------------------------------------

php导入csv文件碰到乱码问题的解决方法

 这篇文章主要介绍了php导入csv文件碰到乱码问题的解决方法,需要的朋友可以参考下 今天主要是想写一个php导入csv文件的方法,其实网上一搜一大把.都是可以实现怎么去导入的.但是我导入的时候遇到了两个问题,一个是在windows上写代码的时候测试发生了乱码问题,然后解决了.第二个是提交到linux系统上的时候又发生了乱码.我开始还不清楚是乱码的原因,一开始我还以为是代码svn提交发生的错误,到最后我在我的一个群里提问了一下,一朋友是做phpcms的,他说他遇到从Windows提交到Linux

Win8系统用IE浏览器下载文件失败的几种解决方法

Win8系统用IE浏览器下载文件失败的几种解决方法 解决方法如下: 1.确保当前计算机已正确并正常连接到网络; 2.使用磁盘清理工具.CCleaner或浏览器内置的功能清理IE临时文件.Cookies和历史记录等,并在清理完成后重启计算机; 3.设置新的下载文件存放路径看看是否可行; 4.尝试禁用下载管理器; 5.如果确定下载的文件是安全的,可以尝试禁用防火墙或杀毒软件; 6.确定浏览器允许进行下载; 7.如果通过以上方法都不能解决,建议安装第三方下载工具尝试下载.

PHP读取大文件末尾N行的高效方法推荐_php技巧

小文件几兆以内大小,都可以通过file()函数,将文件按行读入数组,在用array_pop取得最后一行,就可以了. 但是对于很大的文本文件来说,机器内存不够大,或者php本身memory_limit有限制,这个办法就不适用了,即使强行不限制,效率也是非常低的. 没有办法了吗?当然有,不过没有现成的函数了,需要自己动手了. 这里需要用到文件指针,学过C的应该知道指针式个嘛玩意,通俗的讲吧,PHP中通过fopen打开一个文件,这时候还没有读取文件,这时候指向的是文件开头,指针位置也就是0,当你通过f

php原生导出excel文件的两种方法(推荐)_php实例

第一种方法: $filename='文件名称'; $filetitle='你的标题'; if($_POST){ set_time_limit(10000): $title = ''; ini_set('memory_limit','300M'); header('Content-Type: application/vnd.ms-excel;charset=utf-8'); $name = $title.".xls"; header('Content-Disposition: attac

thinkphp3查询mssql数据库乱码解决方法分享_php实例

thinkphp查询mssql数据库出现乱码的原因是ThinkPHP默认为UTF-8,而msmsql数据库是简体中文版,存储的是GB2312编码 解决方法: 1:在ThinkPHP\Lib\Core 打开Db.class.php,在其最后面加上2:在Db.class.php找到function select(),在$result = $this->query($sql);后面加一条 $result=iconv2utf8($result),就OK了 复制代码 代码如下: public functi

php导入csv文件碰到乱码问题的解决方法_php技巧

今天主要是想写一个php导入csv文件的方法,其实网上一搜一大把.都是可以实现怎么去导入的.但是我导入的时候遇到了两个问题,一个是在windows上写代码的时候测试发生了乱码问题,然后解决了.第二个是提交到linux系统上的时候又发生了乱码.我开始还不清楚是乱码的原因,一开始我还以为是代码svn提交发生的错误,到最后我在我的一个群里提问了一下,一朋友是做phpcms的,他说他遇到从Windows提交到Linux的时候刚开始也总是发生错误,后来排查原因就是乱码导致成的.下面切入正题看怎么解决两个问

PHP下载远程图片并保存到本地方法总结_php实例

1.获取远程文件大小及信息的函数 function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){ fputs($fp,"GET ".(empty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n"); fputs($fp,&qu

ftpclient-apache FTPClient 上传文件,文件内容乱码

问题描述 apache FTPClient 上传文件,文件内容乱码 代码如下: InputStream is = new ByteArrayInputStream(xmlString.getBytes("utf-8")); FtpApache.upload(ip, port, userName, password, path, fileName, is, business.getFtpCharset()); 解决方案 it's ok,suitable