2012-06-21 4 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 ​​() против формы, он получит файл. ** from reference: ** _Per default, файл будет автоматически получен, когда вы вызываете getValues ​​() в форме. Причина такого поведения заключается в том, что сам файл является значением элемента файла. ** Так: ** _Still, иногда вы можете вызвать getValues ​​() без получения файла. Вы можете архивировать это, вызвав setValueDisabled (true). Чтобы получить фактическое значение этого флага, вы можете вызвать isValueDisabled() ._ Я надеюсь, что это поможет ... – RockyFord

+0

Думаю, это поможет мне в будущем. К сожалению, мне нужны данные формы, потому что я использую один контроллер для нескольких изменений. Атрибут «тип» этих форм вызывает необходимые действия для добавления или обновления базы данных или в этом случае файла. Но, как вы видите в моем собственном ответе: PHP довольно прост и работает отлично. Так зачем заботиться? – StoryTeller

ответ

2

Винт Zend. Good ол»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); 
Смежные вопросы