<?php
/*
为了方便大家,我把我遇到的问题总结如下.可能你们还会遇到其他的问题,那就要根据实际情况解决了,但是总结一句话: 养成良好的编程习惯和风格 多动手 多动脑 ,问题就会慢慢解决掉.
1. 在php文件中<-?php ... ?->标志外不能有多余空格和换行,否则读取的压缩包头信息不正确
2.在使用fread函数读取数据后,不能使用flush()或ob_flush()函数清空缓存
3.不能使用header("Content-Range: $from-$to fsize");
header("Content-Length: $content_size");
这两个命令预定文件大小,否则文件读取不完整
他奶奶的就这3条花了我一晚上时间才整明白,日了......
*/
function file_resume($file){
//First, see if the file exists
if (!is_file($file)) { die("<b>404 File not found!</b>"); }
//Gather relevent info about file
$len = filesize($file);
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
//This will set the Content-Type to the appropriate setting for the file
switch( $file_extension ) {
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/x-zip-compressed"; break;
case "rar": $ctype="application/x-rar"; break;
default: $ctype="application/force-download";
}
//Begin writing headers
header("Cache-Control:");
header("Cache-Control: public");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
# workaround for IE filename bug with multiple periods / multiple dots in filename
# that adds square brackets to filename - eg. setup.abc.exe becomes setup[1].abc.exe
$iefilename = preg_replace('/\./', '%2e', $filename, substr_count($filename, '.') - 1);
header("Content-Disposition: attachment; filename=\"$iefilename\"");
//header("Content-Range: $from-$to fsize"); 加上压缩包头信息不正确
//header("Content-Length: $content_size"); 加上压缩包头信息不正确
} else {
header("Content-Disposition: attachment; filename=\"$filename\"");
//header("Content-Range: $from-$to fsize"); 加上压缩包头信息不正确
//header("Content-Length: $content_size"); 加上压缩包头信息不正确
}
header("Accept-Ranges: bytes");
//header('Expires: '.gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y"))).' GMT');
$size=filesize($file);
//open the file
$fp=fopen("$file","rb");
/ ek to start of missing part
fseek($fp,$range);
//start buffered download
while(!feof($fp)){
//reset time limit for big files
set_time_limit(0);
print(fread($fp,1024*8));
//flush(); 这个是多余的函数,加上会使压缩包下载不完整
//ob_flush(); 这个也是多余的函数,加上会使压缩包下载不完整
}
fclose($fp);
exit;
}
?>
分享到:
相关推荐
o米支付PHP接口文档及对接注意事项
备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项
本文实例讲述了PHP global全局变量的使用与注意事项。分享给大家供大家参考,具体如下: 使用global在方法里面声明外部变量为全局变量,即可以调用该变量。 示例1. global基本用法 <?php $a=1; $b=2; test_...
注意事项: 1.WXBizMsgCrypt.php文件提供了WXBizMsgCrypt类的实现,是用户接入企业微信的接口类。Sample.php提供了示例以供开发者参考。errorCode.php, pkcs7Encoder.php, sha1.php, xmlparse.php文件是实现这个类的...
本文实例为大家分享了linux下php上传文件注意事项,供大家参考,具体内容如下 1、修改上传目录权限 linux 修改某目录下所有所有子目录权限 chmod -R 777 html 修改某目录为任何用户都用写读执行权限 chmod a+rwx ...
1.官网下载apache24文件 2.官网下载php5.5文件,下载时注意php的编译版本,是vc9、vc11、vc14还是其他版本,我使用的用vc11编译的 3.本机如果没有安装vc9、vc11、vc14或者其他版本php运行库,...7.注意事项,详见文档
PHP调用com时需要注意的事项。文档中以PHP调用matlab生成dll为例,对调用过程中可能遇到的问题及解决方法进行了描述。
PHP调用com需要注意的事项,文档中PHP调用matlab生成dll为例对调用过程中可能遇到的问题既解决方法进行了描述。
该文档内容是具体描述在https://console.cloud.google.com的API管理器中如何添加项目,为项目创建凭据,选择凭据类型及凭据保存到本地的注意事项,环境变量的配置,如何启用Cloud Speech API,以及如何为启用了该API...
下载正确版本的 ntwdblib.dll (2000.80.194.0),注意这个版本号,不是这个版本的dll 不起作用啊,刚开始搞了好久才发现这个问题,切记。。。 地址: https://www.jb51.net/dll/ntwdblib.dll.html 3. 覆盖 apache...
php fread函数用于从文件中读取一定长度的字符,本文章向大家介绍fread读取文件的实例以及使用该函数读取文件需要注意的几个地方,需要的朋友可以参考一下。
主要介绍了PHP global全局变量经典应用与注意事项,结合实例形式分析了php中global全局变量的功能、使用方法及相关操作注意事项,并附带了$GLOBALS用法作为对比,需要的朋友可以参考下
composer dump-autoload是用来更新vendor/composer/autoload_classmap.php文件的,这个文件有许多配置,使用php artisan命令时就是事先调用这个文件。在新添加一张表时,先执行这个命令,在使用migra
这个是绝对超值的,本人收集了在windows下架设redis数据库的所需软件,以及在实践中应该注意的...这是本人经过长时间收集整理出来的,里面所有软件都带有安装方法,以及安装使用过程中注意的事项,有需要的就下载吧。
mantisbt-1.2.17和EasyPHP-12.1_with_PHP-5.4.6-setup.exe安装心得体会,以及一些修改配置文件的方法和注意事项。对安装配置mantis缺陷管理体统,有一定的参考价值。希望可以能帮助到你。
详细查阅文档+几天测试整理以下几点注意事项: 接入芝麻API接口,应该分2步: 第一步,获得授权,这个,官方的SDK,只要吧参数配置正确,就能操作。 注意下面这些参数,和 芝麻文档对比, 另外最重要的一点,,,...
管理人员统计信息及论文成绩发布,成绩不合格重新安排答辩,成绩合格则发布成绩系统管理:管理员对系统进行维护,如权限设置等三、注意事项1、管理员账号:admin密码:admin数据库配置文件data.php