Skip to content Skip to sidebar Skip to footer

让WordPress支持上传中文文件名

本文解决了在wordpress中上传中文文件名图片无法正常显示的问题。学研端已经用 jpg/ gif /png三种不同格式测试均没有问题。

这三句代码都在路径 .wp-adminincludes下。
前两句需要修改的代码在该路径的file.php文件中。
具体地,第一处是是将以下代码:

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

修改为:

$new_file = $uploads['path'] . "/" . iconv("UTF-8", "GBK", $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' );

第三句需要修改的代码在media.php文件中,具体地,是将以下代码:

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

修改为:

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

这样就可以上传中文文件名的图片了。
以上方法是借鉴网络内容,学研端已经验证它是有效的。
以下简单地解释一下。这些修改目的是将文件名的编码由”UTF-8″转换成”GBK”,以使得服务器可以识别应用该编码的中文文件名。数据库在存放图片文件时仍使用”UTF-8″编码,这样在文件名解析时使用basename函数也会出错,所以需要进行第三句的代码修改。