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 生成饼图 三维饼图
Sep 28 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
php多任务程序实例解析
Jul 19 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
屏蔽PHP默认设置中的Notice警告的方法
May 20 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
CI框架常用函数封装实例
Nov 21 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 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面向对象分析设计的61条军规小结
2010/07/17 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
Python 面向对象 成员的访问约束
2008/12/23 Python
Python之PyUnit单元测试实例
2014/10/11 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
中专生学习生活的自我评价分享
2013/10/27 职场文书
打架检讨书400字
2014/01/17 职场文书
商场总经理岗位职责
2014/02/03 职场文书
高中学生评语大全
2014/04/25 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
社区党建工作方案
2014/06/10 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android