新闻中心

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

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服