Php Zend文件上载重命名错误

Php Zend文件上载重命名错误,php,zend-framework,zend-form,zend-filter,zend-file,Php,Zend Framework,Zend Form,Zend Filter,Zend File,我使用Zend元素文件上传了三个文件。我正在上传和重命名文件。现在的问题是,当上传相同的扩展名时,它会产生错误 Zend_Filter_Exception: File 'D:\wamp2\tmp\php2443.tmp' could not be renamed. It already exists. 例如,如果在第一个文件中,我上载extenstiono.txt文件,在第二个文件中,我上载.docx,在第三个文件中,我再次选择.txt或.docx,它将生成上述给定错误 但如果我选择三种不同的

我使用Zend元素文件上传了三个文件。我正在上传和重命名文件。现在的问题是,当上传相同的扩展名时,它会产生错误

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();

    }

出现错误的原因是您正在命名每个上载的文件:

time() . '.' . $originalFilename['extension'];
调用
receive()
的速度非常快,以至于
time()
在每次调用时都返回相同的值,这样您就可以得到重复的文件名。您只需要为每个文件生成一个更唯一的名称。类似于以下的方法应该可以工作:

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