WordPress 上传中文名图片/附件不显示解决方法

图片或者附件是中文名称的情况下,WordPress 后台上传就出现不显示的情况,主要在Windows主机出现这种问题,因为编码关系。解决方法如下:

在使用wordpress写文章的时候,遇到上传附件的名称为中文,下载的时候出现404问题,进FTP里面看吧,文件名就是显示乱码,弄的我不知所措,一些附件(比如图片,zip,rar压缩包等)还是得上传到博客里面,不过这个问题还是存在,摸索中找到了解决方法,与大家分享。

方法一

首先到FTP里面找到wp-admin/includes/file.php这个文件。在wp-admin/includes/file.php文件中查找

第一步:

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

替换成下面的:(注意:文件中有2处$new_file = $uploads['path'] . "/$filename"; ,我们只需要替换的是第一处,第2处不需要替换)(修正中文文件名编码问题)

$new_file = $uploads['path'] . "/" . iconv("UTF-8","GB2312",$filename);

第二步:

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');

注:其中的 iconv(“UTF-8″,”GB2312″,$filename); 也可以使用“GBK”编码
但是这个方法有个缺点就是每次我上传的文件名重复的话,就会覆盖原文件

方法二

首先到FTP里面找到wp-admin/includes/file.php这个文件。在wp-admin/includes/file.php文件中查找

第一步:

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

替换成下面的:(注意:文件中有2处$new_file = $uploads['path'] . "/$filename"; ,我们只需要替换的是第一处,第2处不需要替换)(修正中文文件名编码问题)

第二步:

$new_file = $uploads['path'] . "/".date("YmdHis").floor(microtime()*1000).".".$ext;

这样就可以实现wordpress上传图片自动重命名了。

以上代码意思就是,上传文件就会以“年月日时分秒+千位毫秒整数”的格式重命名文件。这就再也不用担心图片文件名相同而覆盖了原文件。

# 更多WordPress技巧,请关注「WordPress专题