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的库,结果发现很多东西
Dec 31 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
PHP5 的对象赋值机制介绍
Aug 02 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
php文本转图片自动换行的方法
Mar 13 PHP
php.ini修改php上传文件大小限制的方法详解
Jun 17 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
php字符串的替换,分割和连接方法
May 23 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 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
Zend的MVC机制使用分析(二)
2013/05/02 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
Python编程之多态用法实例详解
2015/05/19 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
python学生管理系统的实现
2020/04/05 Python
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
安全员岗位职责
2013/11/11 职场文书
思想政治教育专业个人求职信范文
2013/12/20 职场文书
老师的检讨书
2014/02/23 职场文书
大学学风建设方案
2014/05/04 职场文书
项目建议书模板
2014/05/12 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
高一作文之乐趣
2019/11/21 职场文书
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android