`
qiujiayu
  • 浏览: 174096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP 文件下载注意事项

    博客分类:
  • PHP
阅读更多

<?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中这些常见的编程注意事项对于编写高质量的PHP代码至关重要。在开发过程中,应当注意运算符的优先级、遵循变量命名的大小写规则,并正确处理序列化数据,以减少潜在的错误和问题。同时,时刻关注...

    linux下php上传文件注意事项.doc

    linux下php上传文件注意事项.doc

    php文件流下载.txt

    根据提供的文件信息,我们可以深入探讨PHP文件流下载的相关知识点,包括其原理、实现方式以及应用场景等。 ### PHP文件流下载的基本概念 文件流下载是指在Web应用中将服务器上的文件发送到客户端(如浏览器),供...

    完整的php安装注意事项

    ### 完整的PHP安装注意事项 #### PHP安装过程中的关键步骤与常见问题解析 在进行PHP环境搭建时,经常会遇到一些棘手的问题,这些问题如果处理不当可能会导致PHP无法正常运行或者出现各种各样的错误提示。本文将从...

    PHP官方API文档

    PHP中文手册提供了详细的函数参考,包括每个函数的参数、返回值、使用示例和注意事项,这对于初学者和经验丰富的开发者来说都是极其宝贵的资源。手册中的API文档涵盖了PHP的所有核心功能和扩展,使得开发者可以快速...

    php编程的注意事项

    在PHP编程领域,掌握一系列的关键注意事项对于提升代码质量和开发效率至关重要。以下是对“php编程的注意事项”这一主题的深入解析,旨在帮助初学者和有一定经验的开发者避免常见陷阱,优化编程实践。 ### 1. 统一...

    o米支付PHP接口文档及对接注意事项omipay_PHPDEMO.zip

    "o米支付PHP接口文档及对接注意事项"是一个关于集成o米支付系统到PHP应用程序的资源包,名为"omipay_PHPDEMO.zip"。这个压缩包包含了一整套接口文档和一个PHP示例项目,旨在帮助开发者顺利实现在线支付功能。 在...

    备份数据库-备份网站-打开网站脚本代码以及注意事项

    备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项 备份数据库-备份网站-打开网站脚本代码以及注意事项

    汇总PHP编程注意事项.doc

    以下是对文档中提到的几个重要注意事项的详细说明: 1. **三元操作符的优先级问题**: PHP中的三元操作符 `?:` 有其特定的运算优先级。在例1中,表达式 `$person = $who or $person = "laruence"` 实际上相当于 `$...

    PHP5.2.3连接 SQLSERVER 注意事项

    在使用PHP5.2.3版本来连接SQL SERVER数据库时,有一些重要的注意事项需要考虑,以确保数据传输的稳定性和安全性。以下是一些关键点的详细解释: 1. **PHP版本兼容性**: PHP 5.2.3是较旧的版本,可能不支持最新...

    PHP通过CURL下载文件

    #### 四、注意事项 1. **安全性**:在实际应用中,需要注意对下载源的验证,确保下载的是安全可靠的文件。 2. **资源管理**:合理使用CURL资源,避免长时间占用不必要的系统资源。 3. **错误处理**:在CURL操作过程...

    php.zip_php 文件下载_卡盟源码下载

    **安全注意事项** 下载和使用第三方源码时,必须注意潜在的安全风险。不安全的源码可能导致SQL注入、XSS攻击等安全漏洞,威胁到用户的隐私和系统的稳定性。因此,务必在部署前进行充分的代码审查和测试。 总结来说...

    PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】 原创

    本文实例讲述了PHP global全局变量的使用与注意事项。分享给大家供大家参考,具体如下: 使用global在方法里面声明外部变量为全局变量,即可以调用该变量。 示例1. global基本用法 &lt;?php $a=1; $b=2; test_...

    PHP开发注意事项总结

    本文档对PHP开发过程中的一些注意事项进行了细致的总结,内容包括代码优化、性能提升、编码习惯等方面,旨在为PHP开发人员提供实践指导和参考。 1. 关于HTML和PHP代码的嵌入:在编写PHP代码时,通常会将HTML与PHP...

    PHP文件怎么打开.docx

    四、下载 PHP 文件的注意事项 当你下载的是一个类似于 ASP 或 PHP 的链接文件时,最终跳转下载的不是下载地址例如后缀类似于 rar 的文件时,说明您下载存在问题。其原因是你使用的是下载工具下载,但该网站限制下载...

    php-redis5.4.x扩展文件和服务端文件

    **四、注意事项** 1. 确保 PHP 和 Redis 的版本兼容。PHP Redis 扩展可能需要特定版本的 PHP。 2. 在 Windows 环境下,确保 PHP 的线程安全(TS)版本与 Redis 扩展匹配。 3. 如果遇到连接问题,请检查防火墙设置,...

    phppdf

    7. 注意事项:由于PDF格式的复杂性,生成PDF时可能遇到编码问题、字体兼容性问题或渲染错误。确保正确配置字体和编码设置,以及对库进行充分测试,是使用Phppdf时需要注意的关键点。 8. 其他PHP PDF库:除了Phppdf...

Global site tag (gtag.js) - Google Analytics