php中强制下载文件的代码(解决了IE下中文文件名乱码问题)


Posted in PHP onMay 09, 2011

中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下。

<?php 
$file_name = urlencode($_REQUEST['filename']); 
header("Pragma: public"); header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header('Content-Type: application/vnd.ms-excel; charset=utf-8'); 
header("Content-Transfer-Encoding: binary"); 
header('Content-Disposition: attachment; filename='.$file_name); 
echo stripslashes($_REQUEST['content']); 
?>

解决PHP Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码就可以解决了。
解决方案一(我的页面是utf-8编码):

$filename = "中文.txt"; 
$ua = $_SERVER["HTTP_USER_AGENT"]; 
$encoded_filename = urlencode($filename); 
$encoded_filename = str_replace("+", "%20", $encoded_filename); 
header('Content-Type: application/octet-stream'); 
if (preg_match("/MSIE/", $ua)) { 
header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); 
} else if (preg_match("/Firefox/", $ua)) { 
header('Content-Disposition: attachment; filename*="utf8''' . $filename . '"'); 
} else { 
header('Content-Disposition: attachment; filename="' . $filename . '"'); 
}

解决方法二

将文件名先urlencode一下再放入header,如下。
代码如下:

<?php 
$file_name = urlencode($_REQUEST['filename']); 
header("Pragma: public"); header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header('Content-Type: application/vnd.ms-excel; charset=utf-8'); 
header("Content-Transfer-Encoding: binary"); 
header('Content-Disposition: attachment; filename='.$file_name); 
echo stripslashes($_REQUEST['content']); 
?>
PHP 相关文章推荐
关于php内存不够用的快速解决方法
Oct 26 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
Laravel中的Blade模板引擎示例详解
Oct 10 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
Laravel实现短信注册的示例代码
May 29 PHP
浅谈php的TS和NTS的区别
Mar 13 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 PHP
PHP7 字符串处理机制修改
Mar 09 PHP
PHP新手入门学习方法
May 08 #PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 #PHP
php 大数据量及海量数据处理算法总结
May 07 #PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 #PHP
php调用mysql数据 dbclass类
May 07 #PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 #PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 #PHP
You might like
自动跳转中英文页面
2006/10/09 PHP
php创建session的方法实例详解
2015/01/27 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
javascript offsetX与layerX区别
2010/03/12 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
如何表示python中的相对路径
2020/07/08 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
记者岗位职责
2014/01/06 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
工程资料员岗位职责
2014/03/10 职场文书
施工工地安全标语
2014/06/07 职场文书
委托书如何写
2014/08/30 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android