2012-06-21 2 views
0

rename-addFilter를 사용하여 업로드 된 파일의 이름을 바꾸려고합니다. 실제 업로드가 이미 작동하지만 파일이 방금 업로드되고 이름이 변경되지 않으므로 어떻게해야합니까?Zend_File_Transfer : 업로드 후 파일 이름 바꾸기

 //Getting the new filename, works perfectly: 
     $name = explode('.', $form['pic']); 
     $ext = $name[1]; 
     $mapper = new Application_Model_CmsMap(); 
     $row = $mapper->fetchRow('childId = "' . $id . '" AND type= "pic"'); 
     $new_filename = $row->name.'.'.$ext; 

     //All images will and are be stored in /public/images/ 
     //Maybe the picture should be replaced, so it should be overwrited, in case it already exists 
     $upload->addFilter('Rename', array(
      'target' => '/images/'.$new_filename, 
      'overwrite' => true, 
      ) 
     ); 

     $upload->receive(); 
+1

일을해야 당신이 필터를 적용하기 전에 파일을 수신 할 수있다 생각합니다. 폼에 대해 getValues ​​()를 호출하면 파일을 수신합니다. ** reference : ** _Per default는 폼에서 getValues ​​()를 호출 할 때 자동으로 수신됩니다. 이 동작의 이유는 파일 자체가 파일 요소의 값이기 때문입니다. ** 그래서 : ** _Still, 때로는 파일을받지 않고 getValues ​​()를 호출 할 수 있습니다. setValueDisabled (true)를 호출하여이를 보관할 수 있습니다. 이 플래그의 실제 값을 얻으려면 isValueDisabled()를 호출 할 수 있습니다. _이 도움이 되었기를 바랍니다 ... – RockyFord

+0

이것이 앞으로 도움이 될 것입니다. 불행히도 여러 편집 작업에 하나의 컨트롤러를 사용하기 때문에이 양식의 데이터가 필요합니다. 이 형식의 '유형'속성은 데이터베이스 또는이 경우 파일을 추가 또는 업데이트하는 데 필요한 조치를 호출합니다. 하지만 내 대답은 다음과 같습니다. PHP는 간단하고 완벽하게 작동합니다. 그렇다면 왜 신경을 씁니까? – StoryTeller

답변

2

나사 젠드 : 다음은 파일을 업로드 내 컨트롤러 코드,입니다. 좋은 팔자 'PHP는 쉽고 완벽하게 작동합니다 :

rename('images/'.$form['pic'], 'images/'.$new_filename); 
0

이 :-)에게

$transferAdapter = new Zend_File_Transfer_Adapter_Http(); 
    $transferAdapter->receive(); 

    $newFilename = 'MY_NEW_FILE'; 

    $filterFileRename = new Zend_Filter_File_Rename(array(
     'target' => 'PATH' + $newFilename, 
    )); 

    $file = $transferAdapter->getFileName(); 

    // new location and name.. 
    $movedFile = $filterFileRename->filter($file);