Дописать случайное число к файлу при загрузке

Аватар пользователя radhab20 radhab20 2 декабря 2017 в 22:18

Здравствуйте, друзья. Подскажите, пожалуйста, в каком направлении копать. Есть обычная нода, у него поле "Файл". Нужно при сохранении материала сменить название файла. Например было file.doc стало file_654324.doc
Какой хук использовать для этого? Пытаюсь через hook_node_insert и hook_node_presave, но в них нет доступа к файлу. Как я понял, файл уже сохранён к этому моменту.

Спасибо за внимание.

0 Thanks

Лучший ответ

Аватар пользователя radhab20 radhab20 3 декабря 2017 в 15:20

В общем, проблему решил. Использовал hook_file_insert

<?php
function mymodule_file_insert($file) {
        if(
$file->source == "field_file1_und_0"){  //ограничиваемся нужным файлом, чтобы не изменял все
          
$rand mt_rand (000000999999);
          
$file->filename $rand."_".$file->filename;
          
$uri "public://".$file->filename;
          
$file file_move($file$uri);
        }
      }
?>

Комментарии

Аватар пользователя gun_dose gun_dose 2 декабря 2017 в 22:53

Есть модуль filefield path, но не помню, он только пути к файлам меняет или сами имена. Но чутьё подсказывает, что на орге должны быть готовые модули. Если же их нет, то нужно искать хуки сохранения файла, а не ноды, т.к. файлы сохраняются раньше, чем начинает создаваться нода.

Аватар пользователя radhab20 radhab20 3 декабря 2017 в 11:47

В моём случае, легче самому написать, чем установить отдельный модуль. Работаю с сайтом клиента

Аватар пользователя radhab20 radhab20 3 декабря 2017 в 15:20

В общем, проблему решил. Использовал hook_file_insert

<?php
function mymodule_file_insert($file) {
        if(
$file->source == "field_file1_und_0"){  //ограничиваемся нужным файлом, чтобы не изменял все
          
$rand mt_rand (000000999999);
          
$file->filename $rand."_".$file->filename;
          
$uri "public://".$file->filename;
          
$file file_move($file$uri);
        }
      }
?>