Ошибка переименования загрузки файла Zend

Я загружаю три файла, используя Zend Element File. Я загружаю и переименовываю файлы. Теперь проблема в том, что при загрузке того же расширения выдает ошибку

Zend_Filter_Exception: File 'D:\wamp2\tmp\php2443.tmp' could not be renamed. It already exists.

Например, если в первый файл я загружаю файл с расширением .txt, во второй я загружаю файл с расширением .docx, а в третьем я снова выбираю .txt или .docx, будет сгенерирована указанная выше ошибка.

Но если я выберу три разных расширения, все пойдет лучше всего. Я использую следующий код

  if ($form->med_file_1->isUploaded()) {

    $originalFilename = pathinfo($form->med_file_1->getFileName());

    $newFilename = time() . '.' . $originalFilename['extension'];
    $form->med_file_1->addFilter('Rename', "application_data/uploaded_files/patients/" . $newFilename,$originalFilename['basename']);
    $form->med_file_1->receive();

}

 if ($form->med_file_2->isUploaded()) {

    $originalFilename = pathinfo($form->med_file_2->getFileName());
    $newFilename = time() . '.' . $originalFilename['extension'];
    $form->med_file_2->addFilter('Rename', "application_data/uploaded_files/patients/" . $newFilename,$originalFilename['basename']);
    $form->med_file_2->receive();

}

    if ($form->med_file_3->isUploaded()) {
                $originalFilename = pathinfo($form->med_file_3->getFileName());
                $newFilename = time() . '.' . $originalFilename['extension'];
                $form->med_file_3->addFilter('Rename', "application_data/uploaded_files/patients/" . $newFilename,$originalFilename['basename']);
                $form->med_file_3->receive();

    }

person Awais Qarni    schedule 22.09.2012    source источник


Ответы (1)


Причина ошибки в том, что вы называете каждый загруженный файл:

time() . '.' . $originalFilename['extension'];

Вызов receive() происходит так быстро, что time() возвращает одно и то же значение при каждом вызове, поэтому вы можете получить повторяющиеся имена файлов. Вам просто нужно создать более уникальное имя для каждого файла. Что-то вроде следующего должно работать:

md5(uniqid(time(), true)) . '.' . $originalFilename['extension'];
//or
$originalFilename['basename'] . '_' . time() . '.' . $originalFilename['extension'];
person drew010    schedule 22.09.2012