CodeIgniter Upload Class — уникальное имя для всех файлов

Первый — часть контроллера codeigniter, куда я загружаю файлы:

        $files = $_FILES;
$order_number = 5 //example
$cpt = count($_FILES['userfile']['name']);

$rand = md5(uniqid(rand(), true));

for($i=0;$i<$cpt;$i++)
{
if(!empty($files['userfile']['name'][$i]))
{
$_FILES['userfile']['name']= $files['userfile']['name'][$i];
$_FILES['userfile']['type']= $files['userfile']['type'][$i];
$_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
$_FILES['userfile']['error']= $files['userfile']['error'][$i];
$_FILES['userfile']['size']= $files['userfile']['size'][$i];

$format=explode('.',$files['userfile']['name'][$i]);
$format=end($format);

$config_img['upload_path'] = './uploads/orders';
$config_img['allowed_types'] = 'jpg|png';
$config_img['file_name'] = $order_number.'_'.$rand.'.'.$format;
$config_img['max_size'] = '5120';
(...)//some code that is not a problem
$this->load->library('upload', $config_img);
if($this->upload->do_upload())
(...)

Хорошо. Получение файлов к этому моменту работает, но проблема заключается в сохранении его под другим именем.
Для примера я отправляю file1.png и file2.jpg
И я не получаю 5_123123123.png и 5_864192696219.jpg, и это проблема.
Я получаю 2 файла с одинаковыми именами (только класс загрузки добавляет «1»), но самая большая проблема заключается в том, что они имеют одинаковый формат. (.png в этом примере) мой вопрос, как я могу получить уникальное имя здесь? Почему его получают для всех файлов с таким же именем?

0

Решение

Эта проблема возникает из-за кэшированной конфигурации. Вместо передачи $ config в качестве параметра вы можете повторно инициализировать новую конфигурацию, используя

$ This-> upload-> Initialize (конфигурации $);
надеюсь, что это решит проблему

1

Другие решения

положил $rand = md5(uniqid(rand(), true)); внутри ур для петли

0