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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
PHP中str_replace函数使用小结
Oct 11 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 PHP
二招解决php乱码问题
Mar 25 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
php上传文件并显示上传进度的方法
Mar 24 PHP
php实现的mongodb操作类
May 28 PHP
php超快高效率统计大文件行数
Jul 05 PHP
php数组冒泡排序算法实例
May 06 PHP
Laravel模型事件的实现原理详解
Mar 14 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 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中opendir函数用法实例
2014/11/15 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
js表单登陆验证示例
2016/10/19 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
Python os模块学习笔记
2015/06/21 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
Python绘制组合图的示例
2020/09/18 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
同学聚会老师邀请函
2014/01/28 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
学校实习推荐信
2015/03/27 职场文书
中学社团活动总结
2015/05/07 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python