thinkphp 文件下载实例 实现以及注意事项
#下载
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 文件下载实例 实现以及注意事项相关推荐
- ThinkPHP分页实例
ThinkPHP分页实例 (2014-09-20 15:34:36) 很多人初学thinkphp时,不太熟悉thinkphp的分页使用方法,现在将自己整理的分页方法分享下,有需要的朋友可以看看. 控制 ...
- HC-05蓝牙模块arduino通信实例代码以及注意事项
HC-05蓝牙模块arduino通信实例代码以及注意事项 HC-05的接线及使用 进入蓝牙的设置模式 进入AT命令模式(设置蓝牙参数) 注意事项 进入AT模式的代码(注意在通电之前让蓝牙模块进入设置模 ...
- python编程实例下载-python网络编程之文件下载实例分析
本文实例讲述了python网络编程之文件下载实现方法.分享给大家供大家参考.具体如下: 真是越看越喜欢python啊,想要了解它提供的http和ftp下载功能,原来是如此的简单. 1.相应模块 ftp ...
- php 下载文件 类库,thinkphp 文件下载 文件下载php | 学步园
THinkPHP1.5中文件的下载 用到的系统类库文件是Http.class.php,位于ThinkPHP\Lib\ORG\Net目录下,类名Http,其中有静态方法 static function ...
- php文件下载到服务器代码,PHP文件下载实例代码浅析
文件下载的功能对一个网站而言基本上是必备的了,今天就来看看php是如何实现文件下载的吧. 无控制类型 这里说的无控制类型是指 没有添加php代码控制的资源可以被直接下载的那些类型.一般而言,压缩文件. ...
- Java笔记:成员变量,局部变量,类变量,实例变量以及注意事项
局部变量:方法中定义的变量. 成员变量(类似C中的全局变量):成员变量定义在方法体和语句块之外.成员变量就概括描述了类中的变量,不区分static.是以下变量的统称. 类变量(静态变量):独立于方法之 ...
- php文件下载脚本,PHP文件下载实例代码浅析
文件下载的功能对一个网站而言基本上是必备的了,今天就来看看PHP是如何实现文件下载的吧. 无控制类型 这里说的无控制类型是指 没有添加PHP代码控制的资源可以被直接下载的那些类型.一般而言,压缩文件. ...
- Git 技术篇 - Github在项目分支里下载某个文件方法,Github项目里的单个js文件下载实例演示
有的小伙伴通过一些链接进入 github 的某个项目分支里后,发现不知道到怎么下载文件,下面来介绍一下. 单个文件下载方法: 点击查看文件. 在点进 Raw . 然后通过 ctrl + s 保存即可. ...
- Spring4 MVC文件下载实例
这篇文章将向您展示如何使用Spring MVC4执行文件下载,我们将看到应用程序从文件系统内部以及外部文件下载文件. 本教程的主要亮点: 下载文件是相当简单的,涉及以下步骤. 创建一个InputStr ...
- java struts 文件下载_Struts2文件下载实例
通过<Struts2文件下载简介>教程的学习,读者已经了解了使用 Struts2 框架实现在指定的目录中下载指定文件的功能.下面通过案例演示文件下载功能. 1)创建下载页面 在 strut ...
最新文章
- 机器人x展架制作_易拉宝展架设计制作常规尺寸材质有哪些?
- 手工清理C:\windows\alg.exe病毒
- 谭浩强课后题之----水仙花数
- 第11章 递归分形树(《Python趣味创意编程》教学视频)
- macbookpython常见问题_python读取文件常见问题(for macOS)
- 使用Underscore.js的template将Backbone.js的js代码和html代码分离
- YUI3学习(二)--YUI Global Object
- EASY_SIZE:控件随窗口变化自由调整大小
- IPv6规模部署及专项督查工作全国电视电话会议
- 树莓派监测CPU温度
- 数据库四种范式和部分依赖,完全依赖,传递依赖
- 【阿里Java技术进阶】官方钉群直播大全(持续更新)...
- php 爬虫登录网站,Python爬虫模拟登录带验证码网站
- C++ 类设计规则及注意事项
- 关于Tomcat在启动时的socket bind failed 730048 错误
- 如何使用Annotation
- MBR分区和GPT分区(系统安装注意)简介及互相转换的方法
- 学C语言和英语水平的关系顶多不过半毛
- 英语长语法难句——状语和状语从句
- 怎么画计算机系统时空图,计算机系统结构中流水线的时空图怎么画
热门文章
- 不会开会,就管不好工作
- 博客积分排名进入前4万
- Day01_FAT12 文件系统
- android实现1000次点击,android – AdMob收入和替代方案:展示次数和点击次数[已关闭]...
- python 数据流中的移动平均值_Python实现数据流中的中位数【堆】
- bat脚本 rar压缩屏蔽某文件夹 不压缩某文件夹
- 虚拟网站禁用php,PHP虚拟主机建议禁用函数列表
- c语言中if内函数值为零,C语言——if(0)之后的语句真的不会执行吗?
- github项目地址在哪里看_拍张照片求解数独,计算机如何从图中看懂题目,这个GitHub热榜项目告诉你...
- 在Kubernetes上使用Sateful Set部署RabbitMQ集群