chtml::link如何做一个强制下载的链接 [ 新手入门 ]
情况是这样的,我想在chtml::link链接到一个文件,可是这文件吧, 什么文件都有,有word,有html.可是html文件会在浏览器中打开。怎么办?我是希望它被下载。 群里“蓝色的梦”和“然”说:用fopen读取这个HTML文件,然后直接输出到浏览器。 定义header为强制下载。CHtml::link 指向一个Controller类的actionXxxx函数,这个actionXxx函数,实现读取文件,定义header,直接将文件的内容输出到浏览器。CHtml::link只是输出一个连接而已,至于这个连接你想什么弄就怎么弄,根本不存在任何关系。 CHtml::link根本不能帮你实现强制下载这个功能,它只是一个中转站而已。 是有道理的,大家怎么看?
共 3 条回复
-
可以使用sendFile或xSendFile,详情可参见API:
http://www.yiichina.com/doc/api/1.1/CHttpRequest#sendFile-detail
或
http://www.yiichina.com/doc/api/1.1/CHttpRequest#xSendFile-detail -
Yii China的扩展和源码部分都是使用的sendFile,代码给你贴出来。
public function actionFile($id) { $model = Files::model()->findByPk($id); if($model===null) throw new CHttpException(404,'您请求的文件不存在.'); else $model->saveCounters(array('downloads'=>1)); $filePath = Yii::app()->request->hostInfo.'/uploads/'.$model->attachment; Yii::app()->request->SendFile($model->filename,file_get_contents($filePath),$model->filetype); }
sxtuwy 山西
注册时间:2011-07-24
最后登录:2013-06-04
在线时长:0小时0分
最后登录:2013-06-04
在线时长:0小时0分
- 粉丝8
- 金钱1645
- 威望0
- 积分1645