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 09 PHP
PHP实现采集程序原理和简单示例代码
Mar 18 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
PHP单元测试配置与使用方法详解
Dec 27 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 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
PHP 组件化编程技巧
2009/06/06 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
google 搜索框添加关键字实现代码
2010/04/24 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
超详细的JS弹出窗口代码大全
2020/04/18 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
python 实现文件的递归拷贝实现代码
2012/08/02 Python
Python实现的石头剪子布代码分享
2014/08/22 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
波兰购物网站:MALL.PL
2019/05/01 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
考试诚信承诺书
2014/05/23 职场文书
销售口号大全
2014/06/11 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript