<?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;
}
?>
分享到:
相关推荐
综上所述,理解PHP中这些常见的编程注意事项对于编写高质量的PHP代码至关重要。在开发过程中,应当注意运算符的优先级、遵循变量命名的大小写规则,并正确处理序列化数据,以减少潜在的错误和问题。同时,时刻关注...
linux下php上传文件注意事项.doc
根据提供的文件信息,我们可以深入探讨PHP文件流下载的相关知识点,包括其原理、实现方式以及应用场景等。 ### PHP文件流下载的基本概念 文件流下载是指在Web应用中将服务器上的文件发送到客户端(如浏览器),供...
### 完整的PHP安装注意事项 #### PHP安装过程中的关键步骤与常见问题解析 在进行PHP环境搭建时,经常会遇到一些棘手的问题,这些问题如果处理不当可能会导致PHP无法正常运行或者出现各种各样的错误提示。本文将从...
PHP中文手册提供了详细的函数参考,包括每个函数的参数、返回值、使用示例和注意事项,这对于初学者和经验丰富的开发者来说都是极其宝贵的资源。手册中的API文档涵盖了PHP的所有核心功能和扩展,使得开发者可以快速...
在PHP编程领域,掌握一系列的关键注意事项对于提升代码质量和开发效率至关重要。以下是对“php编程的注意事项”这一主题的深入解析,旨在帮助初学者和有一定经验的开发者避免常见陷阱,优化编程实践。 ### 1. 统一...
"o米支付PHP接口文档及对接注意事项"是一个关于集成o米支付系统到PHP应用程序的资源包,名为"omipay_PHPDEMO.zip"。这个压缩包包含了一整套接口文档和一个PHP示例项目,旨在帮助开发者顺利实现在线支付功能。 在...
备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项
以下是对文档中提到的几个重要注意事项的详细说明: 1. **三元操作符的优先级问题**: PHP中的三元操作符 `?:` 有其特定的运算优先级。在例1中,表达式 `$person = $who or $person = "laruence"` 实际上相当于 `$...
在使用PHP5.2.3版本来连接SQL SERVER数据库时,有一些重要的注意事项需要考虑,以确保数据传输的稳定性和安全性。以下是一些关键点的详细解释: 1. **PHP版本兼容性**: PHP 5.2.3是较旧的版本,可能不支持最新...
#### 四、注意事项 1. **安全性**:在实际应用中,需要注意对下载源的验证,确保下载的是安全可靠的文件。 2. **资源管理**:合理使用CURL资源,避免长时间占用不必要的系统资源。 3. **错误处理**:在CURL操作过程...
**安全注意事项** 下载和使用第三方源码时,必须注意潜在的安全风险。不安全的源码可能导致SQL注入、XSS攻击等安全漏洞,威胁到用户的隐私和系统的稳定性。因此,务必在部署前进行充分的代码审查和测试。 总结来说...
本文实例讲述了PHP global全局变量的使用与注意事项。分享给大家供大家参考,具体如下: 使用global在方法里面声明外部变量为全局变量,即可以调用该变量。 示例1. global基本用法 <?php $a=1; $b=2; test_...
本文档对PHP开发过程中的一些注意事项进行了细致的总结,内容包括代码优化、性能提升、编码习惯等方面,旨在为PHP开发人员提供实践指导和参考。 1. 关于HTML和PHP代码的嵌入:在编写PHP代码时,通常会将HTML与PHP...
四、下载 PHP 文件的注意事项 当你下载的是一个类似于 ASP 或 PHP 的链接文件时,最终跳转下载的不是下载地址例如后缀类似于 rar 的文件时,说明您下载存在问题。其原因是你使用的是下载工具下载,但该网站限制下载...
**四、注意事项** 1. 确保 PHP 和 Redis 的版本兼容。PHP Redis 扩展可能需要特定版本的 PHP。 2. 在 Windows 环境下,确保 PHP 的线程安全(TS)版本与 Redis 扩展匹配。 3. 如果遇到连接问题,请检查防火墙设置,...
7. 注意事项:由于PDF格式的复杂性,生成PDF时可能遇到编码问题、字体兼容性问题或渲染错误。确保正确配置字体和编码设置,以及对库进行充分测试,是使用Phppdf时需要注意的关键点。 8. 其他PHP PDF库:除了Phppdf...