#下载
        function download()
        {
             $id=$_GET['id'];
             $file_name="批量添加联系人实例文档.";    
             if ($id==1) {
                  //txt
              $file_name=$file_name."txt";
        
             }
             else
             {
              $file_name=$file_name."xls";
             }  

                  $file_name=iconv("utf-8","gb2312",$file_name);
                  $file_sub_path=$_SERVER['DOCUMENT_ROOT']."cardmanage/Public/downfile/";
                  $file_path=$file_sub_path.$file_name;
                  $fp=fopen($file_path,"r");
                  $file_size=filesize($file_path);
                  //下载文件需要用到的头
                  Header("Content-type: application/octet-stream");
                  Header("Accept-Ranges: bytes");
                  Header("Accept-Length:".$file_size);
                  Header("Content-Disposition: attachment; filename=".$file_name);
                  $buffer=1024;
                  $file_count=0;
                  while(!feof($fp) && $file_count<$file_size){
                      $file_con=fread($fp,$buffer);
                      $file_count+=$buffer;
                      echo $file_con;
                  }
                  fclose($fp);    
                  exit();

        }

几点注意事项:

header("Content-type:text/html;charset=utf-8")的作用:在服务器响应浏览器的请求时,告诉浏览器以编码格式为UTF-8的编码显示该内容 
关于file_exists()函数不支持中文路径的问题:因为php函数比较早,不支持中文,所以如果被下载的文件名是中文的话,需要对其进行字符编码转换,否则file_exists()函数不能识别,可以使用iconv()函数进行编码转换 
$file_sub_path() 我使用的是绝对路径,执行效率要比相对路径高 
Header("Content-type: application/octet-stream")的作用:通过这句代码客户端浏览器就能知道服务端返回的文件形式 
Header("Accept-Ranges: bytes")的作用:告诉客户端浏览器返回的文件大小是按照字节进行计算的 
Header("Accept-Length:".$file_size)的作用:告诉浏览器返回的文件大小 
Header("Content-Disposition: attachment; filename=".$file_name)的作用:告诉浏览器返回的文件的名称 
以上四个Header()是必需的 
fclose($fp)可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区

转载于:https://www.cnblogs.com/timelesszhuang/p/3666106.html

thinkphp 文件下载实例 实现以及注意事项相关推荐

  1. ThinkPHP分页实例

    ThinkPHP分页实例 (2014-09-20 15:34:36) 很多人初学thinkphp时,不太熟悉thinkphp的分页使用方法,现在将自己整理的分页方法分享下,有需要的朋友可以看看. 控制 ...

  2. HC-05蓝牙模块arduino通信实例代码以及注意事项

    HC-05蓝牙模块arduino通信实例代码以及注意事项 HC-05的接线及使用 进入蓝牙的设置模式 进入AT命令模式(设置蓝牙参数) 注意事项 进入AT模式的代码(注意在通电之前让蓝牙模块进入设置模 ...

  3. python编程实例下载-python网络编程之文件下载实例分析

    本文实例讲述了python网络编程之文件下载实现方法.分享给大家供大家参考.具体如下: 真是越看越喜欢python啊,想要了解它提供的http和ftp下载功能,原来是如此的简单. 1.相应模块 ftp ...

  4. php 下载文件 类库,thinkphp 文件下载 文件下载php | 学步园

    THinkPHP1.5中文件的下载 用到的系统类库文件是Http.class.php,位于ThinkPHP\Lib\ORG\Net目录下,类名Http,其中有静态方法 static function ...

  5. php文件下载到服务器代码,PHP文件下载实例代码浅析

    文件下载的功能对一个网站而言基本上是必备的了,今天就来看看php是如何实现文件下载的吧. 无控制类型 这里说的无控制类型是指 没有添加php代码控制的资源可以被直接下载的那些类型.一般而言,压缩文件. ...

  6. Java笔记:成员变量,局部变量,类变量,实例变量以及注意事项

    局部变量:方法中定义的变量. 成员变量(类似C中的全局变量):成员变量定义在方法体和语句块之外.成员变量就概括描述了类中的变量,不区分static.是以下变量的统称. 类变量(静态变量):独立于方法之 ...

  7. php文件下载脚本,PHP文件下载实例代码浅析

    文件下载的功能对一个网站而言基本上是必备的了,今天就来看看PHP是如何实现文件下载的吧. 无控制类型 这里说的无控制类型是指 没有添加PHP代码控制的资源可以被直接下载的那些类型.一般而言,压缩文件. ...

  8. Git 技术篇 - Github在项目分支里下载某个文件方法,Github项目里的单个js文件下载实例演示

    有的小伙伴通过一些链接进入 github 的某个项目分支里后,发现不知道到怎么下载文件,下面来介绍一下. 单个文件下载方法: 点击查看文件. 在点进 Raw . 然后通过 ctrl + s 保存即可. ...

  9. Spring4 MVC文件下载实例

    这篇文章将向您展示如何使用Spring MVC4执行文件下载,我们将看到应用程序从文件系统内部以及外部文件下载文件. 本教程的主要亮点: 下载文件是相当简单的,涉及以下步骤. 创建一个InputStr ...

  10. java struts 文件下载_Struts2文件下载实例

    通过<Struts2文件下载简介>教程的学习,读者已经了解了使用 Struts2 框架实现在指定的目录中下载指定文件的功能.下面通过案例演示文件下载功能. 1)创建下载页面 在 strut ...

最新文章

  1. 机器人x展架制作_易拉宝展架设计制作常规尺寸材质有哪些?
  2. 手工清理C:\windows\alg.exe病毒
  3. 谭浩强课后题之----水仙花数
  4. 第11章 递归分形树(《Python趣味创意编程》教学视频)
  5. macbookpython常见问题_python读取文件常见问题(for macOS)
  6. 使用Underscore.js的template将Backbone.js的js代码和html代码分离
  7. YUI3学习(二)--YUI Global Object
  8. EASY_SIZE:控件随窗口变化自由调整大小
  9. IPv6规模部署及专项督查工作全国电视电话会议
  10. 树莓派监测CPU温度
  11. 数据库四种范式和部分依赖,完全依赖,传递依赖
  12. 【阿里Java技术进阶】官方钉群直播大全(持续更新)...
  13. php 爬虫登录网站,Python爬虫模拟登录带验证码网站
  14. C++ 类设计规则及注意事项
  15. 关于Tomcat在启动时的socket bind failed 730048 错误
  16. 如何使用Annotation
  17. MBR分区和GPT分区(系统安装注意)简介及互相转换的方法
  18. 学C语言和英语水平的关系顶多不过半毛
  19. 英语长语法难句——状语和状语从句
  20. 怎么画计算机系统时空图,计算机系统结构中流水线的时空图怎么画

热门文章

  1. 不会开会,就管不好工作
  2. 博客积分排名进入前4万
  3. Day01_FAT12 文件系统
  4. android实现1000次点击,android – AdMob收入和替代方案:展示次数和点击次数[已关闭]...
  5. python 数据流中的移动平均值_Python实现数据流中的中位数【堆】
  6. bat脚本 rar压缩屏蔽某文件夹 不压缩某文件夹
  7. 虚拟网站禁用php,PHP虚拟主机建议禁用函数列表
  8. c语言中if内函数值为零,C语言——if(0)之后的语句真的不会执行吗?
  9. github项目地址在哪里看_拍张照片求解数独,计算机如何从图中看懂题目,这个GitHub热榜项目告诉你...
  10. 在Kubernetes上使用Sateful Set部署RabbitMQ集群