Zend File Upload Rename Ошибка
Я загружаю три файла, используя Zend Element File. Я загружаю и переименовываю файлы. Теперь проблема заключается в том, что при загрузке того же расширения, он генерирует ошибку
Zend_Filter_Exception: File 'D:\wamp2\tmp\php2443.tmp' could not be renamed. It already exists.
Например, если в первом файле я загружаю файл extenstiono .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();
}
1 ответ
Причина ошибки в том, что вы называете каждый загруженный файл:
time() . '.' . $originalFilename['extension'];
Призыв к receive()
случается так быстро, что time()
возвращает одно и то же значение при каждом вызове, чтобы вы могли получить дубликаты имен файлов. Вам просто нужно сгенерировать более уникальное имя для каждого файла. Должно работать что-то вроде следующего:
md5(uniqid(time(), true)) . '.' . $originalFilename['extension'];
//or
$originalFilename['basename'] . '_' . time() . '.' . $originalFilename['extension'];