新闻中心
WordPress实现上传文件自动重命名的两种方法
作者 / 无忧主机 时间 2013-03-02 17:58:44
Wordpress是一款很强大的博客程序,我们可以用wordpress还搭建各种不同的站点,CMS、博客、企业站都可以。最近无忧主机www.51php.com小编就用wordpress搭建了一个博客,可是每次我上传的文件名重复的话,就会覆盖原文件,如果文件名的有中文,就会出乱码。这个应该怎么办呢?下面小编提供两种方法参考:
第一种方法:
1、 使用FTP工具连接你的php虚拟主机,找到wordpress程序的根目录下的/wp-admin/includes/file.php文件,编辑,找到以下代码,如下图所示 (你也可以使用搜索功能,搜索Move the file to the uploads dir)
// Move the file to the uploads dir $new_file = $uploads['path'] . "/$filename"; if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) ) return $upload_error_handler( $file,
sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );2、将上述代码替换为:(当然你也可以装上述代码注释,方便以后还原)
// Move the file to the uploads dir $new_file = $uploads['path'] . "/".date("YmdHis").floor(microtime()*1000).".".$ext; if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) ) return $upload_error_handler ( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );2、 保存file.php,这样就可以实现wordpress上传图片自动重命名了。 以上代码意思就是,保存后覆盖原文件,那么上传文件就会以“年月日时分秒+千位毫秒整数”的格式重命名文件。这就再也不用担心图片文件名相同而覆盖了原文件。 第2种方法: 1、在我们wordpress网站模板目录(wp-content\themes\模块文件名\)下的functions.php中加入以下代码 ,直接放在functions.php文件的最后(注意是 ?> 之前,如下图)就可以。

function new_filename($filename) { $info = pathinfo($filename); $ext = empty($info['extension']) ? ” : ‘.’ . $info['extension']; $name = basename($filename, $ext); return substr(md5($name), 0, 20) . $ext; } add_filter(‘sanitize_file_name’, ‘new_filename’, 10);2、保存functions.php,就可以了。 以上代码将文件名称在上传过程中就自动重命名了。名字规则为系统自动生成的一个32位的MD5加密文件名。(因为32位文件名有点长,所以我们在substr(md5($name), 0, 20) 中截断了将其设置为20位). PS:两种方法各有所长,第一种方法不会因为更换模板而导致失效,第二种方法如果更换模板就需要重新加入代码。 纯Linux环境下高端免备案【香港独立IP地址】 php空间,仅仅只需199元一年起。商务中国域名核心代理直销50元注册国际顶级域名
本文地址:https://www.51php.com/wordpress/10602.html
上一篇: Discuz论坛基础使用教程:如何禁止用户
下一篇: 商务中国域名怎么样添加邮件解析记录(MX)






