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

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

 代码如下 复制代码

function download($file_url,$new_name=''){
 if(!isset($file_url)||trim($file_url)==''){
  return '500';
 }
 if(!file_exists($file_url)){//检查文件是否存在
  return '404';
 }
 $file_name=basename($file_url);
 $file_type=explode('.',$file_url);
 $file_type=$file_type[count($file_type)-1];
 $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;
 //输入文件标签phpernote
 header("Content-type: application/octet-stream");
 header("Accept-Ranges: bytes");
 header("Accept-Length: ".filesize($file_url));
 header("Content-Disposition: attachment; filename=".$file_name);
 //输出文件内容
 @readfile($file_type);
}

时间: 2024-10-23 01:17:37

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

php用header()实现文件下载,下载的文件提示被破坏不能打开的解决办法

本站以前分享过一个文件下载的函数,具体文章连接地址如下: PHP文件下载函数(代码) 最近一客户反映他们网站上所有的图片下载不了了,下载下来的图片都提示文件被破坏,直接导致打不开,作者测试了下发现确实有这个问题,仔细看了下源代码,发现问题的根源在fread这个函数,fread函数的第二个参数是设置读取最大的字节数,经试验发现fread函数单次最大能够读取的字节数是有限制的,仅为8192个字节,即8KB,对于超过这个大小的文件,如果要完整读取,则需要循环读取直至文件结尾.综合以上做了些改正,以下代

PHP通过Header()函数实现文件下载

PHP通过Header()函数实现文件下载,如下代码: <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  <title>应用header()函数实现下载 - www.cxybl.com</title>  <style type="text/css">  &

利用php header函数实现文件下载保存到本地

header() 函数向客户端发送原始的 http 报头. 认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 php教程 4 以及更高的版本中,您可以使用输出缓存来解决此问题): <html> <?php // 结果出错 // 在调用 header() 之前已存在输出 header('location: http://www.111cn.net/'); ?>语法 header(string,replace,http_response_code)参数

php header()函数实现文件下载的例子

 代码如下 复制代码 <?php /**  * 文件下载  * **/ header("Content-type:text/html;charset=utf-8"); download('web/www.111cn.net .txt', 'txt文件下载');   function download($file, $down_name){  $suffix = substr($file,strrpos($file,'.')); //获取文件后缀  $down_name = $do

asp.net实现文件下载时出现提示框不直接打开

//读取文件输出它     string strFile = "c://abc.doc";     FileStream fs = new FileStream(strFile, FileMode.Open);     byte[] bytes = new byte[(int)fs.Length];     fs.Read(bytes, 0, bytes.Length);     fs.Close();     Response.ContentType = "applicat

php header函数下载文件实现代码

header函数最常用的不是用于下载而是用于发送http类的 跳转 它会执行最后一个,不过是有条件的,例如:  代码如下 复制代码 header('Location:http://www.111cn.net"); header('Location:http://www.g.cn'); header('Location:http://www.baidu.com'); 这个就会跳到百度 header('Location:http://www.111cn.net');echo '烈火网; header

php利用header函数下载各种文件_php实例

本文实例为大家分享了php header函数下载文件实现代码,供大家参考,具体内容如下 http://www.php.net/manual/en/function.readfile.php <?php /** * 下载文件 * header函数 * */ dl_file($_GET ['filename']); function dl_file($file) { $file = ".//images//" . $file; //First, see if the file exi

php header函数常见用途

header函数在PHP中是发送一些头部信息的, 我们可以直接使用它来做301跳转等,下面我来总结关于header函数用法与一些常用见问题解决方法.  发送一个原始 HTTP 标头[Http Header]到客户端.标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔.  1.重定向.  Header("Location: http://www.mobiletrain.org");  exit; //在每

Php header()函数语法及使用代码_php技巧

语法: 复制代码 代码如下: Void header(string $string[,bool $replace=true [, int $http_response_code) 向客户端发送原始的HTTP报头需注意:Header函数必须在任何实际的输出前调用,无论是一般的html标签.文件中空行,或者来自php.就是在这个函数之前不能有任何形式的输出.参数说明: 参数 描述string 必需.规定要发送的报头字符串.replace 可选.指示该报头是否替换之前的报头,或添加第二个报头.默认是