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 相关文章推荐
用libtemplate实现静态网页生成
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
自制PHP框架之模型与数据库
May 07 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 PHP
PHP实现通过CURL上传文件功能示例
May 30 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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
php实现将Session写入数据库
2015/07/26 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
js arguments,jcallee caller用法总结
2013/11/30 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
Vue Router中应用中间件的方法
2020/08/06 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python入门教程之运算符与控制流
2016/08/17 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python实现抖音视频批量下载
2018/06/20 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python爬取淘宝商品销量信息
2018/11/16 Python
Form表单及django的form表单的补充
2019/07/25 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
python drf各类组件的用法和作用
2021/01/12 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
超级搞笑检讨书
2014/01/15 职场文书
学生喝酒检讨书
2014/02/06 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
房产代理公证处委托书
2014/04/04 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
教学质量月活动总结
2015/05/11 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
看上去很美观后感
2015/06/10 职场文书