php ie下载文件名乱码的解决办法:1、通过header方法解决乱码;2、通过“function remote_filesize($uri,$user='',$pw='') {...}”等方法解决乱码。

php文件下载IE文件名乱码问题

一直用chrome浏览器,没发现问题。今天用ie6,发现文件下载时文件名乱码,ie下迅雷下载文件名也是乱码。网上查了下说在ie下需要使用urlencode编码一下,我试了下

header('Content-Disposition: attachment; filename='. rawurlencode($file_name);结果用ie下载还是乱码。php文件本身是gbk/gb2312编码,于是我先将$file_name转换成utf-8编码再进行urlencode

header('Content-Disposition: attachment; filename='. rawurlencode(iconv("GBK","UTF-8",$file_name)));这样使用ie下载就没问题了,难道urlencode只能对utf-8进行转义编码?

还有就是获取远程文件的大小问题,php中的filesize函数只能对本地文件进行处理,处理远程文件会失败并发出一条警告,并且在windows平台传入的参数必须是gbk/gb2312编码,使用utf-8编码将无法访问系统中的资源。

在网上找了四种获取远程文件大小的方法,多谢前辈们的分享,记录一下:

方法一:header<?php get_headers($url,true); //返回结果 Array ( [0] => HTTP/1.1 200 OK [Date] => Sat, 29 May 2004 12:28:14 GMT [Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux) [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT [ETag] => "3f80f-1b6-3e1cb03b" [Accept-Ranges] => bytes [Content-Length] => 438 [Connection] => close [Content-Type] => text/html ) ?>

这里可以根据Content-Length直接获取大小了。

方法二:curlfunction remote_filesize($uri,$user='',$pw='') { // start output buffering ob_start(); // initialize curl with given uri $ch = curl_init($uri); // make sure we get the header curl_setopt($ch, CURLOPT_HEADER, 1); // make it a http HEAD request curl_setopt($ch, CURLOPT_NOBODY, 1); // if auth is needed, do it here if (!emptyempty($user) && !emptyempty($pw)) { $headers = array('Authorization: Basic ' . base64_encode($user.':'.$pw)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } $okay = curl_exec($ch); curl_close($ch); // get the output buffer $head = ob_get_contents(); // clean the output buffer and return to previous // buffer settings ob_end_clean(); echo '
head-->'.$head.''; // gets you the numeric value from the Content-Length // field in the http header $regex = '/Content-Length:\s([0-9].+?)\s/'; $count = preg_match($regex, $head, $matches); // if there was a Content-Length field, its value // will now be in $matches[1] if (isset($matches[1])) { $size = $matches[1]; } else { $size = 'unknown'; } //$last=round($size/(1024*1024),3); //return $last.' MB'; return $size; } 方法三:fsock

function getFileSize($url) { $url = parse_url($url); if($fp = @fsockopen($url['host'],emptyempty($url['port'])?80:$url['port'],$error)) { fputs($fp,"GET ".(emptyempty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n"); fputs($fp,"Host:$url[host]\r\n\r\n"); while(!feof($fp)) { $tmp = fgets($fp); if(trim($tmp) == '') { break; } elseif(preg_match('/Content-Length:(.*)/si',$tmp,$arr)) { return trim($arr[1]); } } return null; } else { return null; } } 方法四:file_get_contents

$fCont = file_get_contents("http://www.cnmiss.cn/"); echo strlen($fCont)/1024;

php ie 下载 乱码,php ie下载文件名乱码怎么办相关推荐

  1. php excel中文名称乱码,phpexcel导出中文文件名乱码的解决办法

    使用phpexcel类库导出excel文件,文件名为中文时,在chrome浏览器下导出正常,在IE内核浏览器下导出文件名显示乱码,解决办法就是通过iconv函数转换编码,从utf-8转为gb2312, ...

  2. java导出excel文件名乱码_Poi生成excel文件名乱码问题的解决方案

    Poi是不错的java操作excel的包,开发过程中遇到生成excel文件名乱码.sheet表名乱码的问题,在这里我给大家一个完整的解决方案. 首先我们要写一个生成excel的模板.新建如下servl ...

  3. linux 保存文件名乱码怎么办,Linux下文件名乱码的解决方法

    从网上下了一个zip文件,unzip解压后发现中文显示都是乱码,以前也遇到过打开Windows系统下目录文件名也是乱码的问题.这是什么原因呢? 文件是在Windows下创建的,而Windows的文件名 ...

  4. linux下部署项目,下载文件时,中文文件名乱码问题

    本人在linux服务器的tomcat下部署一个war包项目,但是里面创建中文文件名文件一直乱码,经过多重测试后找到解决方案: 需要在Tomcat启动的时候强制设置LC_ALL 环境变量 =zh_CN. ...

  5. 火狐浏览器下载文件时文件名乱码问题的解决

    火狐浏览器在微信网页版或其他网站中下载文件时,存在文件名乱码的问题,搜索了很多解决办法,写的都比较复杂,不适合我这种不懂代码的人.后来发现火狐浏览器附加组件addons上可以搜到解决此问题的组件,就是 ...

  6. CentOS7 Java应用文件名乱码问题解决(文件下载和创建文件导致的文件名乱码)

    场景描述 spirngboot 部署的Java应用在服务器上,一直都运行得很好. 最近突然发生了乱码问题,同事已通过启动参数 java -Dfile.encoding=utf-8 -jar test. ...

  7. java文件名的编码格式_java下载文件名乱码解决方法详解

    java下载文件名乱码的方法:(推荐:java视频教程) 每个浏览器的编码不一样,火狐采用的是base64.ie和谷歌采用的是url编码: 所以我们在设置响应头的时候Content-Type getS ...

  8. ie浏览器打开aspx文件乱码_ie浏览器下载文件时文件名乱码

    做一个文件下载功能时,用ie浏览器下载时文件名乱码,火狐和谷歌正常,修改后ie显示正常,修改方法如下: @RequestMapping(value = "fileDownload" ...

  9. java下载文件名乱码的解决方法

    java下载文件名乱码的解决方法 参考文章: (1)java下载文件名乱码的解决方法 (2)https://www.cnblogs.com/liyabin/p/7891073.html 备忘一下.

最新文章

  1. ASP.NET Core 3.0 gRPC 身份认证和授权
  2. 人工智能风险分析技术研究进展
  3. 记一次MySQL存储过程和游标的使用
  4. L2-016 愿天下有情人都是失散多年的兄妹(DFS)
  5. 手机输入法带拼音声调_这些神奇的拼音输入法,你都知道几个?
  6. 商品展示页面html模板,CSS3电商网站商品展示窗UI模板
  7. FastStone Capture9.6
  8. html中字体都可以设置哪些,html中设置字体的属性有哪些
  9. 计算机的表格如何加边框,技巧:三种快速添加Excel表格边框的方法
  10. 成都百知教育关于Shopee 平台政策规则解读!
  11. 使用ps抠图_ps扣圆形_ps扣椭圆
  12. CDN是什么?为何要用CDN加速网站?
  13. mysql特性绕过安全狗_【经验总结】SQL注入Bypass安全狗360主机卫士
  14. vue脚手架 编译速度慢95% emitting CopyPlugin
  15. 潜望丨蔚来发布了喜忧参半的财报 与特斯拉的较量刚刚开始
  16. 用Python画小猪佩奇
  17. 小程序各个文件夹的作用分类
  18. android 比较符合android构架,优雅的定义全局变量
  19. 解决Chrome 无法保存密码问题
  20. 计算机默认存储格式,表格默认保存为et格式

热门文章

  1. 【Java】文件操作
  2. Java栈内存、堆内存、方法区对对象和引用的关系
  3. R语言排序 -- sort() order() rank()
  4. Android媒体解码MediaCodec,MediaExtractor
  5. Open Live Writer测试
  6. Dynamics CRM 开启图表的3D效果展示
  7. stringBuffer的使用及字符串比较的区别
  8. JAVA并发编程3_线程同步之synchronized关键字
  9. 暑假集训中期测试 Problem D: 装箱问题2 (并查集)
  10. 在ACCESS中使用Group By语句