- 浏览: 270955 次
- 性别:
- 来自: 海南海口
文章分类
最新评论
-
风尘之驿:
junbin007 写道61行。。莫非这是一种神奇的语法 是那 ...
PHP中批量更新数据表中多条记录 -
junbin007:
61行。。莫非这是一种神奇的语法
PHP中批量更新数据表中多条记录 -
junbin007:
39行,你懂的
PHP中批量更新数据表中多条记录 -
风尘之驿:
String line[] = new String[file ...
开启一个文本文件,一次读取其内的一行文本 -
whumartine:
String line[] = new String[file ...
开启一个文本文件,一次读取其内的一行文本
THinkPHP1.5中文件的下载 用到的系统类库文件是Http.class.php,位于ThinkPHP\Lib\ORG\Net目录下,类名Http,其中有静态方法 static function download ($filename, $showname=”,$content=”,$expire=180); / @param string $filename 下载文件名(完整路径加文件的保存名字) * @param string $showname 下载显示的文件名(想要显示的名字或者从数据库中读出的原来带中文的名字); * @param string $content 下载的内容(默认为空,此时下载的文件就是原文件)。 * @param integer $expire 下载内容浏览器缓存时间 ,默认为空时为180秒。 */ 因为PHP保存文件名不支持中文,所以通常中文文件名保存到服务器上时换成成英文名或者生成随机名字。下载时可以利用此方法回复原文件名。 应用举例:下载时显示文件原名 /* 假设数据库里文件信息存储表为file(id,truename,savenane,user,size). 文件存在于网站项目目录下的uploads文件夹里,本网站项目名为bm,其绝对路径为: H:\AppServ\www\bm\uploads\( H:\AppServ\www\为文档根目录) 此时该目录下有一文件123456789.doc,(savename),原文件名为“读后感.doc”,即truename,大小为2MB. 那么要下载时服务器端得程序为: class FileAction extends Action{ public function download(){ $uploadpath=’H:\AppServ\www\bm\uploads\’;//设置文件上传路径,服务器上的绝对路径 $id=$_GET['id'];//GET方式传到此方法中的参数id,即文件在数据库里的保存id.根据之查找文件信息。 if($id==”) //如果id为空而出错时,程序跳转到项目的Index/index页面。或可做其他处理。 {$this->redirect(‘index’,'Index’,”,APP_NAME,”,1); } $file=D(‘File’);//利用与表file对应的数据模型类FileModel来建立数据对象。 $result= $file->find($id);//根据id查询到文件信息 if($result==false) //如果查询不到文件信息而出错时,程序跳转到项目的Index/index页面。或可做其他处理 {$this->redirect(‘index’,'Index’,”,APP_NAME,”,1); } $savename=$file->savename;//文件保存名 $showname=$file->truename;//文件原名 $filename=$uploadpath.$savename;//完整文件名(路径加名字) import(‘ORG.Net.Http’); Http::download($filename,$showname); } } 然后在该文件下载的HTML模板里要下载该文件的地方加一个下载链接,调用File模块的download方法即可。记得传参数id . 如本例中: <table> <tr> <td>读后感.doc</td> <td>sunmoon</td> <td><a href=’__APP__/File/download/id/{$id}’>下载</a></td> <!– 其中{$id}是模板变量,代表要下载的文件在数据库中的保存id. –> </tr> </table> 注:IE浏览器的下载文件名编码只有gb2312才能显示,若是不然,要不就是文件名乱码,要不就是找不到文件而无法下载。针对此种情况,我对原来的download()方法进行了一些调整,经过测试发现IE、傲游、firefox均可正常下载。 /** +---------------------------------------------------------- * 下载文件 * 可以指定下载显示的文件名,并自动发送相应的Header信息 * 如果指定了content参数,则下载该参数的内容 +---------------------------------------------------------- * @static * @access public +---------------------------------------------------------- * @param string $filename 下载文件名 * @param string $showname 下载显示的文件名 * @param string $content 下载的内容 * @param integer $expire 下载内容浏览器缓存时间 +---------------------------------------------------------- * @return void +---------------------------------------------------------- * @throws ThinkExecption +---------------------------------------------------------- */ static public function download ($filename, $showname='',$content='',$expire=180) { if(file_exists($filename)){ $length = filesize($filename); }elseif(is_file(UPLOAD_PATH.$filename)){ $filename = UPLOAD_PATH.$filename; $length = filesize($filename); }elseif($content != ''){ $length = strlen($content); }else { throw_exception($filename.L('下载文件不存在!')); } if(empty($showname)){ $showname = $filename; } $showname = basename($showname); if(empty($filename)){ $type = mime_content_type($filename); }else{ $type = "application/octet-stream"; } //发送Http Header信息 开始下载 header("content-type:text/html; charset=utf-8"); header("Pragma: public"); header("Cache-control: max-age=".$expire); //header('Cache-Control: no-store, no-cache, must-revalidate'); header("Expires: " . gmdate("D, d M Y H:i:s",time()+$expire) . "GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s",time()) . "GMT"); //下面一行就是改动的地方,即用iconv("UTF-8","GB2312//TRANSLIT",$showname)系统函数转换编码为gb2312 header("Content-Disposition: attachment; filename=". iconv("UTF-8","GB2312",$showname)); header("Content-Length: ".$length); header("Content-type: ".$type); header('Content-Encoding: none'); header("Content-Transfer-Encoding: binary" ); if($content == '' ) { readfile($filename); } else { echo($content); } exit(); } 注:iconv为php系统函数库,但需要安装。若是服务器还没有这个模块安装,则需将iconv.dll下载下来后复制到windows/system32/下面,同时在php安装文件夹得ext文件夹里也复制一份。 然后在php.ini文件中将extension=php_iconv.dll前的”;”去掉,没有的话就加上extension=php_iconv.dll。然后重启服务器即可。
发表评论
-
PHP中判断远程文件或本地文件是否存在
2012-10-31 18:06 1216//判断远程文件是否存在 /* 函数:remot ... -
Thinkphp中某个字段值自增或自减函数
2012-01-18 14:33 1926Thinkphp中某个字段值自增或自减函数,可以用于文章的浏览 ... -
PHP中文件字节大小单位的转换函数
2012-01-18 14:31 1646文件大小的单位转换,自动将字节转换为KB、MB、GB等 ... -
ThinkPHP中获得上下篇文章的函数
2012-01-18 14:28 1162ThinkPHP中获得上下篇文章的函数,大家可以参考一下方法, ... -
PHP一次执行多条sql语句
2011-09-28 14:59 1557PHP一次执行多条sql语句 其中变量$sql中每条sql都 ... -
php数字转汉字的函数算法
2011-09-22 09:23 1289php数字转汉字的函数 /************** ... -
Nginx常用Rewrite伪静态法则,其中有discuz,ecshop等多个产品
2011-09-06 14:04 1939信赖此刻大部门用Linux VPS的伴侣都在利用这个敏 ... -
php检查上传文件是否已存在或同名
2011-08-12 17:08 902//检查上传文件的目录里是否已存在同名的上传文件 fu ... -
判断目录是否为空
2011-08-12 17:07 1418//判断目录是否为空,true为空,false为不空 ... -
获取指定目录下的所有文件名和路径(包括子目录)
2011-08-12 17:05 1783获取指定目录下的所有文件名和路径,同时也包括子目录在内的所有文 ... -
ThinkPHP和FCKeditor编辑器的完美结合
2011-07-24 17:55 2003应用步骤: 1、下 ... -
正则表达式口诀及教程
2011-07-24 17:53 814正则很好用也很强大 ... -
phpMailer使用介绍
2011-07-24 17:52 1232第一步:需要下载PHPMailer文件包phpmai ... -
做网站常用正则表达式
2011-07-24 17:50 902注意:在不同的 ... -
Thinkphp二级网站地图XML生成的方法[图解]
2011-07-24 17:37 3151在admin项目的Tpl目录下default目录里的SiteM ... -
thinkphp清空所有目录(包括子目录)
2011-07-24 17:34 1111在admin项目的Common目录下common.php文件: ... -
thinkphp中对数组元素进行分页显示
2011-07-24 17:32 2200PHP模块代码: class NewsActi ... -
thinkphp中判断远程及非远程文件是否存在
2011-07-24 17:30 1465//判断远程文件是否存在 /* 函数: ... -
thinkphp检查上传文件时是否已存在
2011-07-24 17:29 1386/** +----------- ... -
解决ThinkPHP中以Get方式提交中文字符乱码
2011-07-24 17:22 2053接触thinkPHP还没几天,都还没入门呢,因为公司 ...
相关推荐
这个"Thinkphp6完整资源包下载"提供了ThinkPHP6.0.5版本的所有相关组件,包括但不限于核心框架、常用插件等,对于不习惯或者不方便使用Composer进行依赖管理的用户来说,这是一个非常实用的选择。 `.example.env` ...
10. **环境配置示例**:`.example.env`文件提供了一个环境变量配置的示例,开发者可以根据实际项目需求创建`.env`文件,并配置相应的环境变量,这样可以在不同环境中保持配置的隔离。 总的来说,ThinkPHP6框架提供...
在实际应用中,通过"tp5"这个压缩包文件,你可以得到ThinkPHP5.1的核心框架文件,其中包括配置、库、助手函数、中间件、控制器、模型等相关组件。这些文件构成了ThinkPHP5.1的基础,开发者可以在此基础上搭建自己的...
《ThinkPHP5构建的文件管理平台详解》 在IT行业中,高效、有序的文件管理是提升工作效率的关键。ThinkPHP5,作为一个成熟的PHP框架,结合Layui前端组件库,为开发者提供了一种强大的构建文件管理平台的方式。本文将...
可以看我发表的博文里面有截图:包括快速入门手册(新手教程版),ThinkPHP5.0完全开发手册,ThinkPHP5路由完全指南,ThinkPHP5控制器从入门到精通,掌握ThinkPHP5.0数据库和模型 完全开发手册离线版
本篇文章将详细讲解如何在ThinkPHP框架下实现单个文件的删除操作,包括物理删除和数据库中记录的删除。 首先,我们需要理解文件系统和ThinkPHP框架如何交互。在ThinkPHP中,文件操作主要依赖于PHP内置的文件函数,...
ThinkPHP5.0完全开发手册_看云完整.pdf ThinkPHP5.1完全开发手册离线版.CHM ThinkPHP5控制器从入门到精通.pdf ThinkPHP5快速入门.pdf ThinkPHP5路由完全指南.CHM 掌握ThinkPHP5.0数据库和模型-离线版(官方).chm
在这个“Thinkphp5实现pdf和excel上传下载demo”中,我们将探讨如何利用ThinkPHP5来处理PDF文件的下载以及Excel文件的上传和下载。 首先,我们要理解ThinkPHP5的基本结构和MVC(Model-View-Controller)模式。控制...
Thinkphp6入门到实战
`LICENSE.txt`文件中包含了Apache2开源协议,明确了ThinkPHP V5.0.7的使用、修改和分发的法律条款,保障了开发者权益的同时,也鼓励了社区的共享与创新。 `.travis.yml`文件是持续集成(CI)配置文件,表明此项目支持...
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计...最新版还热乎的Thinkphp5.1完整开发版下载。
在IT行业中,CSV(Comma Separated Values)文件是一种广泛使用的数据交换格式,因其简单...在实际开发中,结合以上知识点,开发者可以实现CSV文件在ThinkPHP应用中的高效导入和导出,提升数据处理效率,简化工作流程。
1.3 主要特点:轻量级、高性能、丰富的扩展性、良好的文档支持、支持RESTful API。 二、ThinkPHP源码结构分析 2.1 源码目录结构:解压"thinkphp完整源码"后,可以看到包括Application、Conf、Controller、Model、...
ThinkPHP6.0是PHP开发中的一款强大、高效且易用的开源框架,其设计目标在于简化开发流程,提高开发效率,同时保持高度的灵活性和可扩展性。作为ThinkPHP框架的最新版本,6.0带来了许多重要的改进和新特性,为开发者...
压缩包文件名为"tp6",很可能包含了ThinkPHP6的核心源码文件、示例项目、配置文件等,开发者可以通过解压后在本地环境中使用`composer`进一步安装和更新依赖,然后开始构建自己的PHP应用。 总的来说,ThinkPHP6作为...
在ThinkPHP的控制器中,你可以使用`header()`函数设置HTTP响应头,指示浏览器以文件形式下载内容。 例如,在`WordController`中,可能有这样的代码片段: ```php public function download() { $wordMaker = new \...
在这个“thinkphp中文分词”项目中,我们将探讨如何在ThinkPHP框架下实现中文分词。 首先,`dict.csv`文件很可能是用于分词的词典文件。词典是中文分词的基础,它包含了大量预定义的词语及其相关信息,如词语频率、...
ThinkPHP5以其简洁、高效和灵活的特点,被广泛应用于Web应用开发,尤其适合构建中小型项目。本指南将深入探讨其核心概念、主要功能以及实际操作步骤。 首先,我们要理解ThinkPHP5的基础架构。它是基于MVC(Model-...
thinkphp5.0开发手册...........................................................................................................................................................
8. `thinkphp_3.2.3_full`:完整的框架源代码包,包含了ThinkPHP的所有组件和文档。 三、核心特性 1. 路由系统:ThinkPHP3.2.3支持自定义路由规则,可以根据不同的URL模式匹配到对应的控制器和方法。 2. MVC架构:...