用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

php header()函数实现文件下载的文件,提示被破坏不能打开

时间:2015-01-23  来源:西部数据  作者:西部数据

最近一客户反映他们网站上所有的图片下载不了了,下载下来的图片都提示文件被破坏,直接导致打不开,作者测试了下发现确实有这个问题,仔细看了下源代码,发现问题的根源在fread这个函数,fread函数的第二个参数是设置读取最大的字节数.

经试验发现fread函数单次最大能够读取的字节数是有限制的,仅为8192个字节,即8KB,对于超过这个大小的文件,如果要完整读取,则需要循环读取直至文件结尾,综合以上做了些改正,以下代码是休整之后的代码,经测试问题解决.

PHP实例代码如下:

  1. function download($file_url,$new_name=''){ 
  2.  if(!isset($file_url)||trim($file_url)==''){ 
  3.   return '500'
  4.  } 
  5.  if(!file_exists($file_url)){//检查文件是否存在 
  6.   return '404'
  7.  } 
  8.  $file_name=basename($file_url); 
  9.  $file_type=explode('.',$file_url); 
  10.  $file_type=$file_type[count($file_type)-1]; 
  11.  $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type
  12.  //输入文件标签phpernote 
  13.  header("Content-type: application/octet-stream"); 
  14.  header("Accept-Ranges: bytes"); 
  15.  header("Accept-Length: ".filesize($file_url)); 
  16.  header("Content-Disposition: attachment; filename=".$file_name); 
  17.  //输出文件内容 
  18.  @readfile($file_type); 
  19. }//开源软件:phpfensi.com
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门