2012-09-22 2 views
1

젠드 요소 파일을 사용하여 3 개의 파일을 업로드합니다. 파일을 업로드하고 이름을 바꿉니다. 이제 문제는 같은 확장자를 업로드 할 때 내가 .docx을 업로드 초에 extenstiono .txt의 파일을 업로드 및 세 번째에 내가 다시 .txt 또는 .docx, 그것은 것 선택한 첫 번째 파일의 경우, 예를 들어젠드 파일 업로드 이름 바꾸기 오류

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

의 오류를 생성한다는 것입니다 위의 주어진 오류를 생성합니다.

하지만 세 가지 확장명을 선택하면 모든 것이 최선의 방법입니다. 다음 코드

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

    } 

답변

2
을 사용하고

각 업로드 된 파일의 이름을 지정하고 있기 때문에 오류의 원인은 다음과 같습니다

receive()에 대한 호출이 각 호출에 그 time() 반환 동일한 값을 너무 빨리 발생

time() . '.' . $originalFilename['extension']; 
그래서 당신은 중복 파일 이름으로 끝날 수 있습니다. 각 파일에 더 고유 한 이름을 생성하면됩니다. 다음과 같은 것이 작동해야합니다.

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

jambbbbbbbbooooooooooooo .... Thanks dude –