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直接获取大小了。

方法二:curl
function 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 '<br>head-->'.$head.'<----end <br>'; 
 
    // 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; 

再生龙备份与还原Linux系统实战 再生龙(Clonezilla)是一个免费的灾难恢复、硬盘克隆、硬盘镜像制作的部署和解决方案,类似于Symantec Ghost。该工具性能不错,克隆5G的系统到40个客户端,只需要短短的10分钟。该工具还包含一个自动启动光盘版本—— Clonezilla Live。 阅读详情

相关推荐

PXE引导再生龙安装Windows操作系统

简化操作系统安装 PXE 再生龙 Windows操作系统安装

基于再生龙(clonezilla)的系统镜像的备份和还原

1、再生龙备份与还原 2、再生龙母盘制作工具地址及方法

dqz1231的博客 1万+

ubuntu安装hodoop详细步骤

进入到Ubuntu系统中打开桌面,点击鼠标右键打开终端,在终端中输入如下命令这样就可以创建一名为hadoop的新用户。给用户输设置密码输入,输入如下命令,设置密码,按提示输入两次然后为hadoop用户增加管理员全新,这样就可以方便部署完成之后输入重启命令,重启一下Ubuntu系统,然后登录到我们创建的hadoop用户上面reboot。

2301_77603488的博客 9198

使用再生龙clonezilla对win10和ubuntu16的双系统备份与还原

win10和ubuntu16的双系统备份与还原 上一段时间台式机安装了win10和ubuntu16的双系统,好不容易安装上了。就想着把这个系统备份下,如果后面发生了意外还可以还原。我是想备份整个磁盘,就可以备份这两个系统了。找了好多资料,ghost貌似不支持ext4的Linux文件,所以不能把ubuntu和win10一起备份。 苍天不愧有心人,阿拉终于想起来之前用过再生龙clonezilla,

zhusongziye的博客 9387

保姆级教程:用STM32H743+TJA1042T玩转FDCAN,CubeMX配置1M/5M双速率通信(附完整代码)

本文提供STM32H743与TJA1042T实现FDCAN双速率通信的保姆级教程,详细讲解CubeMX配置1M/5M双速率通信的全过程,包括硬件连接、时钟树配置、过滤器设置及中断管理,并附完整代码示例,助力开发者快速掌握FDCAN高速通信技术。

weixin_30698297的博客 472

使用libx265对YUV进行h265编码

使用libx265对YUV进行h265编码

Embedded engineer 3075

php ie 下载 乱码,php强制下载文件的代码(解决IE下中文文件名乱码问题)

代码功能:浏览器提交excel格式的数据和文件名到服务器上,PHP将请求转化为可下载的excel文件,并要求浏览器弹出文件下载提示窗口。在提交中文文件名直接放到header里在IE下会变成乱码。解决方法:将文件名先urlencode一下再放入header。代码:复制代码 代码示例:$file_name = urlencode($_REQUEST['filename']);header("Pragm...

weixin_39844963的博客 122

发那科机器人弧焊指令实战:从Search指令到组掩码设置的完整避坑指南

本文详细解析了发那科机器人弧焊指令系统的实战应用,从Search指令的正确使用到组掩码设置的避坑技巧。通过实际案例和参数优化建议,帮助工程师提升焊接质量和生产效率,避免常见错误操作。特别针对T2模式示教难题和外部轴协调运动提供了专业解决方案。

weixin_29040367的博客 184

php ie 下载 乱码,解决PHP在IE浏览器下载文件,中文文件名乱码问题

前提:我们网站所有文件全部使用的是UTF-8 NO BOM的编码方式1、找测试重现。360浏览器下载的呵呵,果然文件名是乱码。再请测试在ie浏览器下测试。IE9,8,7也全部是乱码。查看编码就是UTF-8.所名不是编码问题造成的。使用firefox8 测试很正常。猜想是因为ie的某些特殊的设置导致的问题。2、以"PHP ie 下载 文件名乱码"为关键字搜索。果然,ie对中文文件名的下载文件是需要特...

weixin_39668199的博客 153

扫地机器人行业 企业篇-产业总部地理分布

中国扫地机器人产业呈现区域集聚特征,广东省以13家企业领跑全国,其中深圳独占9家(如大疆、云鲸智能等),佛山、广州、东莞各有分布。江苏省6家企业主要集中在苏州(科沃斯、追觅科技等)。北京聚集了石头科技、小米等4家品牌。浙江、山东、湖南等地也有代表性企业分布。国际品牌方面,美国iRobot、韩国三星/LG、日本松下等均在各自国家设立总部,而戴森、飞利浦等欧洲品牌则将中国运营中心设在上海或苏州。值得注意的是,部分品牌如由利、宝家丽虽为外资起源,但主要运营实体已落户中国。

智能硬件研发,欢迎交流 360

基于YOLOv8和时序模型的异常动作检测系统

异常动作检测是计算机视觉领域的重要应用,广泛应用于智能监控、安防系统、老人看护等场景。本项目结合YOLOv8目标检测和LSTM时序模型,实现对打架、摔倒、奔跑等异常动作的实时检测,并提供了完整的Web界面。多技术融合: 结合YOLOv8目标检测和LSTM时序建模实时检测: 支持实时视频流处理和文件分析用户友好: 提供完整的Web界面可扩展性: 模块化设计便于功能扩展高性能: 包含多种优化策略。

YOLO 763

解决PHP在IE浏览器下载文件,中文文件名乱码问题

今天一个问题:“使用360浏览器和IE 出现文件名称乱码”. 前提:我们网站所有文件全部使用的是UTF-8 NO BOM的编码方式 1、找测试重现。360浏览器下载的呵呵,果然文件名是乱码。再请测试在ie浏览器下测试。IE9,8,7也全部是乱码。查看编码就是UTF-8.所名不是编码问题造成的。使用firefox8 测试很正常。猜想是因为ie的某些特殊的设置导致的问题。 2、以"PHP ie

xiaoxiaohui520134的博客 1975

【MATLAB】嵌入式PID控制参数整定与优化

本文提出了一种基于MATLAB仿真的嵌入式PID参数优化方法,解决了传统人工试凑法效率低、适应性差的问题。通过建立一阶滞后被控对象模型,对比分析了不同PID参数组合的性能表现,筛选出最优参数。仿真结果表明,优化后的PID参数能有效降低超调量(从传统方法的显著超调降至接近0%),缩短调节时间,提高稳态精度。最终将优化算法部署到STM32平台,实现了"仿真整定-参数优化-嵌入式落地"的完整开发流程。该方法显著提升了嵌入式系统的响应速度和控制精度,为工业控制应用提供了标准化解决方案。

unber的博客 45

java ie下载文件名乱码问题_php中强制下载文件的代码(解决了IE下中文文件名乱码问题)...

中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下。$file_name = urlencode($_REQUEST['filename']);header("Pragma: public"); header("Expires: 0");header("Cache-Control: must-revalid...

weixin_35668334的博客 159

Xilinx FPGA平台GTX简易使用教程(一)GTX基础知识

理解GTX的必备姿势,学起来!

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

php ie 下载 乱码,PHP实例问题,浏览器下载文件中文文件名称乱码如何解决

针对IE将文件名称进行urlencode,并且设置force-download可以解决中文问题,但是在火狐下却不再显示中文名称了functionsendFile($serverPath,$filename,$charset='UTF-8',$mimeType='application/octet-stream'){$filename='"'.urlencode($...

weixin_32214771的博客 157

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

PHP Header下载文件在IE文件名中文乱码问题

解决PHP Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码,根据UA检测,区别下载,就可以解决了 $filename = "中文.txt"; $ua = $_SERVER["HTTP_USER_AGENT"]; $encoded_filename = urlencode($filename); $encoded_...

weixin_30378311的博客 138

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

PHP解决IE浏览器下载文件名乱码问题

网站开发中,经常会碰到下载文件功能,某些需求就要下载文件名为中文。 一般输出中文都会用UTF-8编码,但IE浏览器的一些版本转换下载文件名时,并不使用UTF-8编码,导致文件名乱码。测试了名为“中文.txt”的文件下载功能,在IE 11浏览器的下载如下: 在其他浏览器上,比如chrome,火狐,360都没有问题: 尝试了一下,在文件名输出时,将文件名转换成gb2312

coderchc的专栏 4406

php header下载中文名称,PHP Header下载文件在IE文件名中文乱码问题

解决PHP Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码就可以解决了。解决方案一(我的页面是utf-8编码):...

weixin_39967670的博客 197

php ie 下载 乱码,php中强制下载文件的代码(解决了IE下中文文件名乱码问题)...

中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下。$file_name = urlencode($_REQUEST['filename']);header("Pragma: public"); header("Expires: 0");header("Cache-Control: must-revalid...

weixin_42116921的博客 93
上一篇: struts2学习笔记(三) Action(上)
下一篇: php文件下载IE文件名乱码问题
jdluojing
博客等级 码龄17年 79粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值