• 要找福利?记不住网址?搜不到?如何与我们保持联系?试试 CTRL+D 把零点博客添加进您的浏览器收藏夹,一键直达永不失联! QQ群

wordpress添加媒体图片上传带中文文件名图片自动更改名称插件

未分类 福利哥 878次浏览 3个评论

给博客搬家后发现wordpress后台多媒体中上传图片时不能用带中文的文件名,否则穿完后会出现红叉,访问生成的URL会出404!
记得之前在Dreamhost上是没有任何问题的,研究了一番后问题是这样出现的:WP的php脚本使用的字符编码是UTF-8,所以上传后生成的文件名字符串也是UTF-8编码的,而主机系统的设置应该是ANSI的(GB2312或GBK之类的),所以导致请求文件名编码与实际文件编码不一致,导致404错误。而之前搬家时搬过来的以前上传的文件没有问题,就是在主机控制面板上的webftp里看到的都是作为ANSI解析的UTF-8字节乱码,而后来上传的图片文件虽然用浏览器访问会404,但在webftp里看着却一切正常,这该死的字符编码问题!
后来搜到了这篇博文:Wordpress中文名附件上传问题的解决方案 http://blog.csdn.net/wonderyl/article/details/5682095

作者的解决方法是通过修改WP上传文件处理代码,将文件名从UTF-8转为GB2312或GBK保存文件,然后再在写入数据库时还原回UTF-8版本,试着修改了一下确实不会再404了,webftp里看见的文件也和之前DH搬过来的一样效果了:(但是,后来发现这样做有些不妥的地方:功能上来说,这样做只是解决了上传时保存的文件名,虽然能正常访问了,但是在多媒体库中删除这样处理过的图片文件时,会导致文件实体不能正常删除的问题,估计是还有其他代码需要做相应的修改,而且,一些相关的其他插件,比如自动添加图片水印的插件,也会因为文件名的问题而不能正常工作。另外就是这种直接hack主体source的做法在日后wordpress更新时也许会导致麻烦,还得重新做一遍修改。

想来想去还是决定放弃这种方式了,等着哪天wordpress更新这个兼容小bug吧还是。但这么放弃了又不是很甘心,每次用QQ截图完了,还得删掉文件名里的中文再上传,很是麻烦。好在没一会儿我就找到了这么一个插件:uploading downloading non-latin filename http://wordpress.org/extend/plugins/uploadingdownloading-non-latin-filename/ 作者是个同样深受编码之苦的韩国人,呵呵。

这个插件能在上传图片时自动重命名保存文件的文件名,并将原文件名作为标题保存,这样一来总算是能折衷的解决这恶心的编码问题了,试了一下水印插件也OK了。

No related posts.


喜欢 (0)
[ld]
分享 (0)
  1. 来源百度关键词http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=wordpress%E6%B7%BB%E5%8A%A0%E5%AA%92%E4%BD%93%E4%B8%AD%E6%96%87%E5%90%8D%E7%A7%B0&rsv_pq=bd4b7409000006ab&rsv_t=0323CCMZJ1Bq28JOmbArCksDyBeGCJlujqOUIijSAT6K6xwBH5ZNM%2FpcK1o&rsv_enter=1&rsv_sug3=1&rsv_sug2=0&inputT=1271&rsv_sug4=2555