本文解决了在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函数也会出错,所以需要进行第三句的代码修改。
最近玩WP博客有点少,不过这个的确有点用处
可是以后每次升级就都需要改文件了。
没有效果