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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
php开发工具之vs2005图解
Jan 12 PHP
php ss7.5的数据调用 (笔记)
Mar 08 PHP
注册页面之前先验证用户名是否存在的php代码
Jul 14 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
PHP如何通过表单直接提交大文件详解
Jan 08 PHP
laravel 根据不同组织加载不同视图的实现
Oct 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
smarty section简介与用法分析
2008/10/03 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
php动态生成函数示例
2014/03/21 PHP
php简单分页类实现方法
2015/02/26 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
使用正则替换变量
2007/05/05 Javascript
jQuery 使用手册(四)
2009/09/23 Javascript
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
python 控制语句
2011/11/03 Python
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
快速了解python leveldb
2018/01/18 Python
python删除不需要的python文件方法
2018/04/24 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
医学专业毕业生个人求职信
2013/12/25 职场文书
特色蛋糕店创业计划书
2014/01/28 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
三八妇女节致辞
2015/07/31 职场文书
婚庆答谢词大全
2015/09/29 职场文书
浅谈MySQL之select优化方案
2021/08/07 MySQL