首页 / 帖子
如何在不使用模块的情况下对上传文件自动重命名?

请问如何在不使用模块的情况下对上传文件自动重命名?比方以MD5形式的文件名命名。。

drupalchina里有一个文章可以修改,但是是直接改内核的fine.inc文件的,感觉这样好像不是很好。


好像有个drupal_basname是相关的,求教。。

2个答案
陈蹊
发布于:2015-01-11 19:32

用 drupal 的 file_move 函数在提交表单的时候修改文件名。

Amanda Song
发布于:2015-01-12 00:16

下面是网上找来的代码。。

加入templates.php后网站就变空白了。。

function coverupload_form_submit($form, &$form_state) {
if(isset($form_state['values']['cover']) && $form_state['values']['cover'] != '') {
 
 $file = file_load($form_state['values']['cover']);
 // Change status to permanent.
 $file->status = FILE_STATUS_PERMANENT;
 // Save.
 file_save($file); 
  
 $node = node_load($form_state['storage']['rid']);
   
 $node->field_release_cover['und'][0] = (array)$file;
  
  if($node = node_submit($node)) { // Prepare node for saving
  node_save($node);
  }
  // Delete the old file
  file_delete($file);
  
        $new_file = $node->field_release_cover['und'][0]['fid']));
        $pattern = '/^(.+)(\.jpg)$/';
        preg_match($pattern, $new_file->uri, $matches);
        $new_uri = $matches[1].'_'.substr(md5(rand(0,10000)), 0, 3).$matches[2];
        file_move($file, $new_uri);
 }
 
}