解决Content-Disposition: 下载中文名乱码,下载乱码

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介:

header('Content-Disposition: attachment; filename*="'. $FileNname . '"');浏览器的不同导致PHP下载中文名乱码。

解决办法如下:

经测试,目前以兼容各主流浏览器。

 

 
  1. $lb_sourcefile_name=$_GET['sourcefile']; 
  2. $down_url=$_GET['operate']; 
  3. if($_GET['mykey']){ 
  4.     $mykey=$_GET['mykey']; 
  5.     $mykey=str_replace("_","+",$mykey);      
  6.     $mykey=base64_decode($mykey); 
  7.     if($mykey === '2013abcdefg2013lubansoft9527'){ 
  8.         $lb_sourcefile_name=str_replace("_","+",$lb_sourcefile_name);        
  9.         $lb_sourcefile_name=base64_decode($lb_sourcefile_name); 
  10.         $down_url=str_replace("_","+",$down_url); 
  11.         $down_url=base64_decode($down_url); 
  12.         $down_url='../lb/rename_file/'.$down_url
  13.         $ua = $_SERVER["HTTP_USER_AGENT"]; 
  14.         header('Content-Description: File Transfer'); 
  15.         header('Content-Type: application/octet-stream'); 
  16.         if (preg_match("/MSIE/"$ua)) { 
  17.             $lb_sourcefile_name = urlencode($lb_sourcefile_name); 
  18.             $lb_sourcefile_name = str_replace("+""%20"$lb_sourcefile_name);  
  19.             header('Content-Disposition: attachment; filename="' . $lb_sourcefile_name . '"'); 
  20.         }  
  21.         elseif (preg_match("/Firefox/"$ua)) { 
  22.             header('Content-Disposition: attachment; filename*="utf8\'\'' . $lb_sourcefile_name . '"'); 
  23.         }  
  24.         else { 
  25.             header('Content-Disposition: attachment; filename="' . $lb_sourcefile_name . '"'); 
  26.         } 
  27.         header('Content-Transfer-Encoding: binary'); 
  28.         header('Expires: 0'); 
  29.         header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
  30.         header('Pragma: public'); 
  31.         header('Content-Length: ' . filesize($down_url)); 
  32.         ob_clean(); 
  33.         flush(); 
  34.         readfile($down_url); 
  35.         exit
  36.     } 
  37.     else
  38.         die(404); 
  39.     } 


本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/1158319 ,如需转载请自行联系原作者





相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
5月前
|
C++
VS Code 中文乱码及编码格式问题全解
VS Code 中文乱码及编码格式问题全解
2131 0
|
存储 数据挖掘 数据处理
【解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG 】
【解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG 】
703 0
|
Web App开发 XML 编解码
IE浏览器下载文件中文文件名乱码问题解决
IE浏览器下载文件中文文件名乱码问题解决
123 0
|
10月前
解决Imgcodecs.imwrite 写入中文 路径 乱码
解决Imgcodecs.imwrite 写入中文 路径 乱码
131 0
Pycharm 中文乱码解决,统一设置 UTF-8,再也不会乱码了
Pycharm 中文乱码解决,统一设置 UTF-8,再也不会乱码了
Pycharm 中文乱码解决,统一设置 UTF-8,再也不会乱码了
根据url下载文件为zip格式文件到客户端并解决火狐浏览器中文乱码问题
根据文件的远程路径将多文件合并成zip压缩包,然后下载到客户端,并解决火狐浏览器中文文件名乱码问题,下面是代码。
305 0
|
C#
解决Sublime Text 3中文显示乱码问题
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/79925327 在 mac 下用 Sublime Text 3 打开 Windows 编写的 C# 类文件时,中文显示乱码。
2214 0
教你如何解决Sublime Text 3使用中出现的中文乱码问题
Sublime Text 3 是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦。 不过Sublime Package Control所提供的插件可以让Sublime Text 3几乎完美地支持CJK编码的文本。
2190 0