首页 > CMS > Wordpress > 正文

wordpress文件上传到服务器改变文件名

2024-09-07 00:50:28
字体:
来源:转载
供稿:网友

没有人能保证自己上传的文件时不会存在相同名字的,那么要如何解决此问题呢,wordpress博客中我们可以利用wp_handle_upload_prefilter来解决此问题,下面演示一个实例.

例,利用图片高与宽生+文件名成名字,代码如下:

  1. add_filter( 'wp_handle_upload_prefilter''modify_uploaded_file_names', 20); 
  2. function modify_uploaded_file_names( $image ) { 
  3.     // Get default name of uploaded file and set to variable 
  4.     $imagename = $image['name']; 
  5.     // Case switch for multiple file extensions 
  6.     switch ( $image['type'] ) { 
  7.         case 'image/jpeg' : 
  8.             $suffix = 'jpg'
  9.             break
  10.         case 'image/png' : 
  11.             $suffix = 'png'
  12.             break
  13.         case 'image/gif' : 
  14.             $suffix = 'gif'
  15.             break
  16.     } 
  17.     // Get size of uploaded image and assign to variable 
  18.     $imagesize = getimagesize($image); 
  19.     // Re-structure uploaded image name 
  20.     $image['name'] = "{$imagesize[0]}x{$imagesize[1]}-{$imagename}.{$suffix}"
  21.  
  22.     return $image

例,利用年月日时分秒+千位毫秒整数

以wordpress 3.2.1为例,打开“wp-admin/includes/file.php” www.Vevb.com文件,找到第327行这段代码:

  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("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'] ) ); 

保存,重新上传文件,这样,新上传的文件,就会自动保存为“年月日时分秒+千位毫秒整数”的新文件名,并保存到相应的年月文件夹之下了.

提醒你,这两种方法个人觉得后者更适合我们一些哦,因为按年月日时分秒+千位毫秒整数不会出现重复名字,而按图片高与宽生+文件名成名字还有可能存在重复名字.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表