网站地图    收藏   

主页 > 后端 > wordpress教程 >

WordPress上传中文附件乱码解决方法 - WordPress

来源:自学PHP网    时间:2014-11-28 23:42 作者: 阅读:

[导读] 中文附件乱码原因与其它php上传中文名乱码原因是一样的就是编码问题,因为php对中文支持不怎么样我可以转换编码或直接重命令上传的文件名即可 熟悉PHP的朋友可能会很快解决问题,但...

WordPress上传中文附件乱码解决方法

中文附件乱码原因与其它php上传中文名乱码原因是一样的就是编码问题,因为php对中文支持不怎么样我可以转换编码或直接重命令上传的文件名即可.

熟悉PHP的朋友可能会很快解决问题,但不熟悉PHP代码的朋友看过此文章相信一定能解决你的问题,接下来就分享下我的解决wordpress上传中文文件名乱码的心得吧~:

找到/wp-admin/includes/file.php这个文件,并最如下修改:

  1. function wp_handle_upload( &$file$overrides = false, $time = null ) { 
  2. //…. 
  3. // Move the file to the uploads dir 
  4. //$new_file = $uploads['path'] . “/$filename”; 
  5. // 修正中文文件名编码问题 
  6. $new_file = $uploads['path'] . “/” . iconv(“UTF-8″,”GB2312″,$filename); 
  7. //… 
  8. //return apply_filters( ‘wp_handle_upload’, array( ‘file’ => $new_file, ‘url’ => $url, ‘type’ => $type ), ‘upload’ ); 
  9. // 修正中文文件名编码问题 
  10. return apply_filters( ‘wp_handle_upload’, array( ‘file’ => $uploads['path'] . “/$filename”, ‘url’ => $url, ‘type’ => $type ) , ‘upload’); 

修改完上传至服务器,问题就解决啦,其实很简单的啦,简单的,把以下代码添加到主题目录functions.php 文件:

  1. function upload_file($filename) { 
  2. $parts = explode(‘.’, $filename); 
  3. $filename = array_shift($parts); 
  4. $extension = array_pop($parts); 
  5. foreach ( (array$parts as $part
  6. $filename .= ‘.’ . $part
  7. if(preg_match(‘/[一-?]/u’, $filename)){ 
  8. $filename = md5($filename); 
  9. $filename .= ‘.’ . $extension
  10. return $filename ; 
  11. add_filter(‘sanitize_file_name’, ‘upload_file’, 5,1); 

上传文件自动重命名的方法,下面以wordpress 3.2.1为例,打开wp-admin/includes/file.php文件,找到第326行这段代码:

  1. // Move the file to the uploads dir 
  2. $new_file = $uploads['path'] . "/$filename"
  3. if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) ) 
  4.       return $upload_error_handler$file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) ); 

将其修改为:

  1. // Move the file to the uploads dir 
  2. $new_file = $uploads['path'] . "/".date_i18n("YmdHis").floor(microtime()*1000).".".$ext;  
  3. if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) ) 
  4.         return $upload_error_handler$file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) ); 

保存,重新上传文件,这样,新上传的文件,就会自动保存为“年月日时分秒+千位毫秒整数”的新文件名,并保存到相应的年月文件夹之下了,没错,就这么简单,测试、通过,面对欧美客户的英文外贸网站推荐使用此法.

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论