2013-10-10 2 views
0

У меня есть форма для загрузки, которая имеет два входных файла.Zend addFilter переименовать только один файл

Я хочу переименовать файлы так, чтобы у каждого было уникальное имя. Вот что у меня в контроллере

public function mainAction() 
    { 
     $upload = new Zend_File_Transfer(); 
     $files = $upload->getFileInfo(); 

     foreach ($files as $file => $info) { 
      $upload->addFilter('Rename', uniqid($file.'_').'.csv', $file); 
     } 

     $upload->receive(); 
    } 

Даже если я файл указан в качестве последнего параметра Я в SetFilter, переименовывает оба файла в то же время, так что они в конечном итоге с тем же именем.

+0

Hm, и что, если вы используете 'addFilter' вместо этого' setFilter'? – Wrikken

+0

О, извините, я использую addFilter, это было atypo – wiredin

+0

Hm, ваши вызовы 'uniqid' фактически создают 2 разных строки? (Я вижу комментарий о Cygwin на странице руководства) – Wrikken

ответ

0

Я понял, как это сделать.

Это форма:

<input type="file" name="one"> 
<input type="file" name="two"> 

это идет в контроллере

 $renamefile1 = new Zend_Filter_File_Rename(array(
     'target' => $path.'/file1.csv', // path to file 
     'overwrite' => true 
     )); 

     //rename file 2 to file2 
     $renamefile2 = new Zend_Filter_File_Rename(array(
     'target' => $path.'/file2.csv', // path to file 
     'overwrite' => true 
     )); 


     $names = $upload->getfileName(); 
     $file1 = $renamefile1->filter($names["one"]); 
     $file2 = $renamefile2->filter($names["two"]); 
Смежные вопросы