最新文章
Latest Articleswordpress上传中文名图片不能显示的解决办法
发布时间:2014/10/18 代码问题 浏览次数:530 欢迎阅读!
大家为了网站页面的美观,一般都会在文章中插入图片,但是有时候插入的图片却无法显示或者出现乱码,笔者就遇到过这样的问题。后来偶然间发现,自己上传的英文名图片却毫无问题,很明显就能知道问题的症结,由于wordpress是外国人开发的软件,虽说是中文版,但是对中文的支持还是不怎么友好,控制上传文件的系统文件里面的源代码并不支持中文编码。在这里提醒大家,在wordpress网站的数据库里不要出现中文名的文件夹和文件,如果你实在想用中文命名数据库里面的文件和文件夹,你必须按下面的方法修改你的wordpress中文件的源代码。
?
1、首先修改一下上传,打开 wp-admin/include/file.php
文件,找到346行
$new_file = $uploads[‘path’] . “/$filename”;
将这一行修改为:
$new_file = $uploads[‘path’] . “/” . iconv(“UTF-8″, “GBK”, $filename);
这样修改后就将上传的文件的文件名转换成了GBK编码,服务器就能够正确的识别文件名了。
然后找到351行,
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’ );
但是存放于数据库的文件名依然是UTF-8的,所以,在使用 basename() 函数时,文件名再次解析错误。
打开 wp-admin/include/media.php 文件,找到1173行
$filename = basename($post->guid);
修改为:
$filename = substr($post->guid, strrpos($post->guid, ‘/’)+1);