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 压缩文件夹的类代码
Nov 05 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
javascript some()函数用法详解
Nov 13 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
smarty的section嵌套循环用法示例
May 28 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
Jan 23 PHP
PHP echo()函数讲解
Feb 15 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
用js遍历 table的脚本
2008/07/23 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
python学习之面向对象【入门初级篇】
2017/01/21 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
Python线程之定位与销毁的实现
2019/02/17 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
销售演讲稿范文
2014/01/08 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
办公设备采购方案
2014/03/16 职场文书
煤矿安全生产标语
2014/06/06 职场文书
大学生村官个人总结
2015/02/15 职场文书
表扬信格式模板
2015/05/05 职场文书
心灵点滴观后感
2015/06/02 职场文书
孔子观后感
2015/06/08 职场文书
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
Anaconda配置各版本Pytorch的实现
2021/08/07 Python