2014-10-20 2 views
0

Мне нужно переименовать файл при загрузке и вставке файла в базу данных. Я ищу способы, но я не могу найти правильный код. Я пытался использовать обратный вызов, но он не работал.бакалея crud переименовать имя файла при загрузке

Вот мой код:

public function home() 
{ 
    $crud = new grocery_CRUD(); 
    $crud->set_theme('datatables'); 
    $crud->set_table('blog_post'); 
    $crud->set_field_upload('post_image',UPLOAD_PATH); 
    $crud->callback_before_upload(array($this,'_before_upload')) 
    $crud->callback_before_insert(array($this,'rename_img_db')); 
    $output = $crud->render(); 
    $this->_example_output($output); 
} 
function rename_img_db($post_array) 
{ 
    if (!empty($post_array['post_image'])) { 
     $ext = end(explode(".",$post_array['post_image'])); 
     $img_name = $post_array['post_image'] = mktime().".".$ext; 
     $post_array['post_image'] = $img_name; 
    } 
    return $post_array; 
} 
function _before_upload($files_to_upload,$field_info) 
{ 
    foreach($files_to_upload as $value) { 
     $ext = pathinfo($value['name'], PATHINFO_EXTENSION); 
     $rename = $value['name']; 
    } 
    $allowed_formats = array("jpg","gif","png","doc","docx","pdf"); 
    if(in_array($ext,$allowed_formats)) 
    { 
     return true; 
    } 
    else 
    { 
     return 'Wrong file format'; 
    } 

    if ($rename) { 
     $ext1 = end(explode(".",$rename)); 
     $img_name = $rename = mktime().".".$ext1; 
     $rename = $img_name; 

     return $rename; 
    } 
} 

ответ

0

Я заметил типо в вашей линии: $ crud-> callback_before_upload (массив ($ это, '_ before_upload'))

Кроме того, я должен был сделать что-то подобное и я использовал callback_after_insert, тогда вы можете получить переменную $ primary_key и с этим обновлением элемента, например:

$crud->callback_after_insert(array($this, 'rename_img_db')); 

public function rename_img_db($post_array,$primary_key) 
    { 

     //Here goes the get and set querys with your $primary_key 

    }