2011-08-02 3 views
0

모든 파일을 선택하지 않은 경우 같은 양식으로 여러 파일을 업로드 할 수없는 것 같습니다 (업로드 한 경우 작동).여러 파일을 업로드 할 수 없습니다.

관련 코드 :

<form id = "form" name = "form" action="<?php echo URLgenerator::getURL('project', 'group-edit', array('id' => $projectGroup->getId()), 'admin'); ?>" method="post" enctype='multipart/form-data'> 
     <?php 
      foreach($langs as $lang): 
       $langId = $lang->getId(); 
       $displayName = $lang->getDisplayName(); 
     ?> 
      <fieldset id="In<?php echo $displayName; ?>"> 
       <legend id ="<?php echo $langId?>"> 
        <?php echo $displayName; ?>: 
       </legend> 
       <label for="name-<?php echo $langId; ?>">Name: </label> 
       <input type="text" id="name-<?php echo $langId; ?>" name="name-<?php echo $langId; ?>" style="width: 500px;" value="<?php echo $projectGroup->getName($lang); ?>" /> 
       <br /> 
       <label for="imageOff-<?php echo $langId; ?>">Image Off: </label> 
       <input type="file" id="imageOff-<?php echo $langId; ?>" name="imageOff-<?php echo $langId; ?>" /> 
       <img src="<?php echo $projectGroup->getImageOffURL($lang); ?>" /> 
       <br /> 
       <label for="imageOn-<?php echo $langId; ?>">Image On: </label> 
       <input type="file" id="imageOn-<?php echo $langId; ?>" name="imageOn-<?php echo $langId; ?>" /> 
       <img src="<?php echo $projectGroup->getImageOnURL($lang); ?>" /> 
      </fieldset> 
     <?php 
      endforeach; 
     ?> 
     <div align="center"> 
      <input type="submit" value="Edit" id="button1" /> 
      <input type="reset" id="button2" /> 
     </div> 
    </form> 

및 동작합니다 (위해서 var_dump 디버깅을위한)

public function groupEditAction() 
    { 
     $id = $this->getRequest()->getParam('id'); 
     $projectGroup = new ProjectGroup($id); 

     $name = Array(); 
     $langs = LangFuncs::getAllLangs(); 
     foreach($langs as $lang) { 
      $langId = $lang->getId(); 

      $name[$langId] = $this->getRequest()->getParam("name-$langId"); 
     } 

     $projectGroup->edit(null, $name); 

     $upload = new Zend_File_Transfer_Adapter_Http(); 
     $upload->setDestination(URLgenerator::getTempFolder()); 
     $upload->receive(); 
     $info = $upload->getFileInfo(); 
     var_dump($info); 
     return; 
     foreach($langs as $lang) { 
      $langId = $lang->getId(); 
      try { 
       if($info["imageOff-$langId"]['tmp_name'] != '') { 
        $projectGroup->uploadImageOff($lang, $info["imageOff-$langId"]['tmp_name']); 
        unlink($info["imageOff-$langId"]['tmp_name']); 
       } 
       if($info["imageOn-$langId"]['tmp_name'] != '') { 
        $projectGroup->uploadImageOn($lang, $info["imageOn-$langId"]['tmp_name']); 
        unlink($info["imageOn-$langId"]['tmp_name']); 
       } 
      } 
      catch (Zend_File_Transfer_Exception $e) { 
       $this->_helper->redirector('image-upload', 'error', 'admin', array()); 
      } 
     } 

     $this->_helper->redirector('index', 'project', 'admin', array()); 
    } 

답변

1

모든 파일 필드의 이름이 동일하다. 세 가지 모두 같은 이름을 가지고 있기 때문에 마지막 (빈) 한 첫 번째 사람을 덮어하는 그 후 [], 즉

name="imageOff-<?php echo $langId; ?>[]" 

를 추가합니다.

+0

그래야합니까? –

+0

아니요, foreach의 $ langId 변경 사항과 내가 확인한 방화 상자에서 서로 다릅니다 (on-1, off-1, on-2, off-2). – Vadiklk

관련 문제