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对象类型判断
Aug 27 PHP
基于php设计模式中单例模式的应用分析
May 15 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 PHP
浅析PHP文件下载原理
Dec 25 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
php批量删除操作(数据访问)
May 23 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
PHP7 整型处理机制修改
Mar 09 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
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PDO::exec讲解
2019/01/28 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
CL vs ForZe BO5 第四场 2.13
2021/03/10 DOTA
js判断变量是否空值的代码
2008/10/26 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
详解VueJs中的V-bind指令
2018/05/03 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
什么时候用assert
2015/05/08 面试题
爱之链教学反思
2014/04/30 职场文书
反对邪教标语
2014/06/30 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
乔迁新居祝福语
2019/11/04 职场文书