阳光太仓人才网




-> 专题栏目 -> 网络技术 找资讯

ueditor上传图片中文文件名失败的解决办法

发布时间:2014-11-27 阅读次数:  

    ueditor是一个非常不错的在线html编辑器,作为百度的产品,在百度贴吧等应用中广泛应用,经受了时间和用户的考验,功能,性能和稳定性来说都是不错的。太仓人才网目前正在测试将原有的html编辑器替换成ueditor。

    在试验的过程中,发现ueditor 默认使用时间戳加上6位随机数作为上传图片的名称,这样就导致一个问题,不管用户上传的是“简历.jpg”还是“myphotos.jpg”在服务器端都会变成类似 “1416821640984672.jpg”这样一串数字的文件名。对于日后文件的识别和管理非常不方便。在php版本的ueditor中,php文件夹中,可以通过config.json来更改这一设置。我将保存文件名更改成了 {time}_{filename} 这样,如果用户上传的文件是“我的照片.jpg”服务器端就会保存为类似 ”1416821640_我的照片.jpg“。这一设计也和之前太仓人才网的html编辑器一致。

    在修改好这一配置后,开始上传了几个图片也都正常,但是在上传某些文件名带有中文的图片时,出现的上传错误,并且不能显示图片。查看html源代码,发现img src的路径是正确的,但是图片不能显示。


    到服务器上的上传文件夹去一看,文件是有了,但是文件名变成了乱码”1417049031_涓?枃.jpg“,而不是期望的”1417049031_中文.jpg“,原因就是UTF版本的ueditor保存的中文文件名也是utf8的。解决方法很简单,找到其处理上传的核心文件,Upload.class.php,在第120行左右,将

    
      //移动文件
        if (!(move_uploaded_file($file["tmp_name"], $this->filePath) && file_exists($this->filePath))) { 
            $this->stateInfo = $this->getStateInfo("ERROR_FILE_MOVE");
        } else { 
            $this->stateInfo = $this->stateMap[0];
        }

//改为

      //移动文件
        $saveFilePath=iconv("UTF-8", "GBK//IGNORE",$this->filePath);
        if (!(move_uploaded_file($file["tmp_name"], $saveFilePath) && file_exists($saveFilePath))) {
            $this->stateInfo = $this->getStateInfo("ERROR_FILE_MOVE");
        } else {
            $this->stateInfo = $this->stateMap[0];
        }

 

网络技术 (最近更新)

正在打开...
【提出建议、反馈错误,得红包奖励】

微信扫码访问获得更好体验
【营业执照、人力资源服务许可证】

刷新

返回