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 相关文章推荐
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
将数组写入txt文件 var_export
Apr 21 PHP
phpmyadmin3 安装配置图解教程
Mar 29 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
php将session放入memcached的设置方法
Feb 14 PHP
php 删除cookie方法详解
Dec 01 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
DWZ+ThinkPHP开发时遇到的问题分析
Dec 12 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
PHP的curl函数的用法总结
Feb 14 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如何抛出异常处理错误
2011/03/02 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
js获取单选框或复选框值及操作
2012/12/18 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
一个简单的python程序实例(通讯录)
2013/11/29 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
如何用Python 加密文件
2020/09/10 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
最新的咖啡店创业计划书
2013/12/30 职场文书
个人求职信范例
2014/01/29 职场文书
师德学习感言
2014/01/31 职场文书
企业新年寄语
2014/04/04 职场文书
教师演讲稿大全
2014/05/16 职场文书
好听的队名和口号
2014/06/09 职场文书
学校安全责任书范本
2014/07/23 职场文书
大学生安全责任书
2014/07/25 职场文书
庆国庆活动总结
2014/08/28 职场文书
2014年图书室工作总结
2014/12/09 职场文书
《确定位置》教学反思
2016/02/18 职场文书
MySQL数据库完全卸载的方法
2022/03/03 MySQL