`
jdluojing
  • 浏览: 16608 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

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; 

分享到:
评论

相关推荐

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

    以下这段代码作用是:浏览器提交excel格式的数据和文件名到服务器上,PHP将请求转化为可下载的excel文件,并要求浏览器弹出文件下载提示窗口

    PHP 强制下载文件代码

    复制代码 代码如下: &lt;?php $filename = ‘1.png... 您可能感兴趣的文章:php中强制下载文件的代码(解决了IE下中文文件名乱码问题)php强制下载类型的实现代码IE php关于强制下载文件的代码php 强制下载文件实现代码

    KODExplorer 芒果云-资源管理器

    - 文件下载,支持大文件下载、断点续传。 - 解决更改排序方式后 ——对应右键菜单不同步问题。 - 优化右键更改列表状态,同步保存配置到服务端。 - 文件浏览器打开(a点击新窗口跳转,a不支持click,用子元素冒泡来...

    WebFTP(支持ZIP在线解压) v2.5.1

    1、修复IE浏览器下载文件名乱码 2、修复IE6浏览器无法下载的问题 *商业版-&gt;个人版,企业版升级到3.x,其中企业版添加管理中心,可添加多用户 功能简介 目录:剪切、复制、粘贴、删除、压缩、打包下载、权限设置、...

    Glype完全汉化&&移动版自动跳转适配.zip

    然后将main-back.php文件名修改为main.php文件,替换原来的main.php文件 5.使用页面JS代码实现的跳转效率较低,需要的时间更长,故默认不使用JS代码来实现跳转 6.移动版的Google搜索失效,这是Glype程序本身与...

    Discuz! X1.5.1 繁体BIG5 R20111221.zip

    FIX 去掉'wmode', 'transparent'属性,在IE9下面会造成没有办法输入文字的问题 FIX 修复QQ互联用户登录覆盖发帖同步设置的bug FIX 群组发帖审核时间段不受全局限制 FIX 点评IP显示细节 FIX 发布活动中如果添加有...

    Discuz! X1.5.1 简体GBK R20111221.zip

    FIX 去掉'wmode', 'transparent'属性,在IE9下面会造成没有办法输入文字的问题 FIX 修复QQ互联用户登录覆盖发帖同步设置的bug FIX 群组发帖审核时间段不受全局限制 FIX 点评IP显示细节 FIX 发布活动中如果添加有...

    Discuz! X1.5.1 繁体UTF8 R20111221.zip

    FIX 去掉'wmode', 'transparent'属性,在IE9下面会造成没有办法输入文字的问题 FIX 修复QQ互联用户登录覆盖发帖同步设置的bug FIX 群组发帖审核时间段不受全局限制 FIX 点评IP显示细节 FIX 发布活动中如果添加有...

    Discuz! X1.5.1 简体UTF-8 R20111221.zip

    FIX 去掉'wmode', 'transparent'属性,在IE9下面会造成没有办法输入文字的问题 FIX 修复QQ互联用户登录覆盖发帖同步设置的bug FIX 群组发帖审核时间段不受全局限制 FIX 点评IP显示细节 FIX 发布活动中如果添加有...

    SabreIPB v1.217.0814 简体中文版论坛

    用IE下载中文附件时文件名乱码(简体和繁体) 后台某些地方在IE下乱码 2006-03-08内测版本:1.1.0308 基于IPB2.1.5制作,UTF-8编码。 针对官方IPB2.1.5的修正和调整如下: 中文化以及针对中文的调整: 中文化的安装...

    淘客帝国破解版

    修复UTF8版本文章系统无法整合,乱码的问题 某些模板友情链接可能丢失的问题。 单页文档广告位不能后台设置的问题 APP超限造成的失败率太高,总是报警问题。 产品详细页因为淘宝BUG,经常取不到推广地址问题。 增加...

    奥瑞文在线培训系统服务器安装包v2.2.9

    * 解决IE6备份数据无法下载的问题 * 在使用播放器与上传前检查是否安装了flash * 解决修改view或admin路径时部分模板加载错误问题 * 批量导入用户使用中文地域化(有些服务器没有正确设置地域信息,导致csv中文无法...

    DouPHP轻量级企业网站管理系统 v1.1 Release 20140708

    修正 后台数据备份文件下载删除功能无过滤路径问题 新增 后台设置商品价格小数位数 修正 nginx伪静态规则 修正 留言板中设置留言显示和隐藏按钮 修正 伪静态规则,允许404.html或301.html 修正 产品图片尺寸没有根据...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    小鱼儿外贸网站模板管理系统V3.8

    7,详细介绍可传附件,方便供客户下载PDF,Doc,Xls,RAR,ZIP等文件 8,保存远程图片功能,当复制别人网站图片到详细简介,勾选“保存远程图片到本站”,即可把别人的图片保存到自己的网站空间 9,记录产品点击数,...

    apache 2.2.21 -win32-x86

    可以添加很多,系统会根据从左至右的顺序来优先显示,以单个半角空格隔开,比如有些网站的首页是index.htm,就在光标那里加上“index.htm ”文件名是任意的,不一定非得“index.html”,比如“test.php”等,都可以...

    网页设计大赛方案(第八届综合技能大赛之一).doc

    " " " " "导航清晰,网页文字及链接无错误,主页与附属 "8 " " " "页连接自如、查阅方便,文件组织管理合理规范 " " " " "(特别强调文件名使用规范,首页命名一律使用i" " " " "ndex.htm/index.html/index.php)。...

Global site tag (gtag.js) - Google Analytics