乌徒帮技术范WordPressWordPress使用 › wordpress上传中文名图片不能显示的解决办法

wordpress上传中文名图片不能显示的解决办法

分类:WordPress使用

大家为了网站页面的美观,一般都会在文章中插入图片,但是有时候插入的图片却无法显示或者出现乱码,笔者 就遇到过这样的问题。后来偶然间发现,自己上传的英文名图片却毫无问题,很明显就能知道问题的症结,由于wordpress是外国人开发的软件,虽说是中 文版,但是对中文的支持还是不怎么友好,控制上传文件的系统文件里面的源代码并不支持中文编码。在这里提醒大家,在wordpress网站的数据库里不要 出现中文名的文件夹和文件,如果你实在想用中文命名数据库里面的文件和文件夹,你必须按下面的方法修改你的wordpress中文件的源代码。

1、首先修改一下上传,打开 wp-admin/include/file.php文件,找到

$new_file = $uploads['path'] . “/$filename”;

将这一行修改为:

$new_file = $uploads['path'] . “/” . iconv(“UTF-8″, “GBK”, $filename);

这样修改后就将上传的文件的文件名转换成了GBK编码,服务器就能够正确的识别文件名了。

2、然后找到

return apply_filters( ‘wp_handle_upload’, array( ‘file’ => $new_file, ‘url’ => $url, ‘type’ => $type ), ‘upload’ );

将这行修改为:

return apply_filters( ‘wp_handle_upload’, array( ‘file’ => $uploads['path'].”/$filename”, ‘url’ => $url, ‘type’ => $type ), ‘upload’ );

3、但是存放于数据库的文件名依然是UTF-8的,所以,在使用 basename() 函数时,文件名再次解析错误。

打开 wp-admin/include/media.php 文件,找到

$filename = basename($post->guid);

修改为:

$filename = substr($post->guid, strrpos($post->guid, ‘/’)+1);

我用sae的wordpress测试后,发现第三步中的内容不能在wordpress3.2中找到,因此只修改了前两步,并实现了相同的效果。

已有1条评论 快速评论
  1. 呜摹邓 #619楼 2011/11/18 14:49:00 回复

    博客做的不错,欢迎回访啊

填写个人信息,赶快回复吧!