surveys.com.cn
moodle新增在线资源中连结到档案或网站,直接连结中文档名会造成IE6无法找到档案问题解决方法。
  • 提交:天一
  • 时间:08-03-07 21:47
  • 更新:08-03-07 21:47

moodle新增在线资源中连结到档案或网站,直接连结中文档名会造成IE6无法找到档案问题解决方法。


前篇文章提出解决中文档名上传下载备份解压缩问题,但是新增在线资源中连结到档案或网站直接连结中文档名会造成IE6无法找到档案问题。


原因描述:
此问题只会出现在IE6IE7Firefox并不会出现此问题,原因仍发生在IE6送网址仍以BIG5送出,前篇文章于下载档案时将档名转成BIG5即可,但是本文问题出现在在线资源存取方式为先呼叫mod/resource/view.php判断是何种资源再呼叫相关的程序(例如file.php),而中文档名经IE6变成BIG5码再呼叫file.php则造成 //check that file exists下一行检查档名找不到档案


修正方法:
修改mod/resource/type/file/resource.class.php将中文档名经urlencode则能正常


原来:
}else { //Normal Uploaded file
  if ($CFG->slasharguments) {


$relativeurl="/file.php/{$course->id}/{$resource->reference}";


上一行改成


if (check_browser_version()) {
        if (!check_browser_version("MSIE","7")) {
            $str=$resource->reference;
            $en="";
            while ($str<>".")
            {
                $en=urlencode(basename($str)).$en;
               //注意!若系统为PHP5.1.6则上一行需改成   
               //$en=urlencode(file_basename($str)).$en;  
               //PHP5.2.4测试后basename已可正常处理中文,因此可不用改成file_basename
  
                $str=dirname($str);
                if ($str<> ".")
                    $en="/".$en;
            }
            $relativeurl = "/file.php/{$course->id}/$en";
        }
        else
            $relativeurl = "/file.php/{$course->id}/{$resource->reference}";
    }
    else
       $relativeurl = "/file.php/{$course->id}/{$resource->reference}";


 红色部份为检查IE6,蓝色部份因数据夹也可能是中文


附记:php5.1.6 basenameUTF-8中文处理会有问题,但php5.2.4则能正常处理。 


 

文章推荐

    Loading...

人气排行

    Loading...
[ 简体中文 ] [ 简改蓝 ] 管理模式
Copyright ©2005 - 2008 www.emoodle.org
Processed in 0.212(s) Powered by Hutula 1.0

浙ICP备08007391号-1