Zend_Form_Element_File重命名文件保存扩展名

Ole*_*leg 5 zend-framework file-upload zend-form

我使用Zend Form并上传文件.我需要为它重命名和用户addFilter.但是,如果我尝试在代码中获得文件的扩展名,我会收到错误"文件过多,允许最大'1'但是给出'2'".如果我尝试使用$ _FILES进行扩展,看起来它可以解决但看起来很难看.你能告诉我如何重命名文件保存它的扩展名吗?

        $form = new Form_ImportSubscribers();               
        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
                //it looks like it works but it's ugly solution
//              $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); 
                //causes an error "Too much files, maximum '1' are allowed but '2' are given"           
                $extension = pathinfo($form->file->getFileName(), PATHINFO_EXTENSION);              
                $form->file->addFilter('Rename', $accountId . '_' . time() .  '.' . $extension);

                if (!$form->file->receive()) {
                    $this->view->form = $form;
                    $this->view->listName = $list->list_name;                                   
                    return;
                }       
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 14

如果$ form-> file-> getFileName()返回多个值,我假设你上传了多个文件.在这种情况下,您可以应用重命名过滤器并接收单个文件,如下所示:

/*@var $adapter Zend_File_Transfer_Adapter_Http */
$adapter =  $form->file->getTransferAdapter();
$receivingOK = true; 
foreach ($adapter->getFileInfo() as $file => $info) {                                     
    $extension = pathinfo($info['name'], PATHINFO_EXTENSION); 
    $adapter->addFilter('Rename', $accountId . '_' . time() .  '.' . $extension, $file);
    if (!$adapter->receive($file)) {
         $receivingOK = false;
    }
}

if (!$receivingOK) {
    $this->view->form = $form;
    $this->view->listName = $list->list_name;                                   
    return;
} 
Run Code Online (Sandbox Code Playgroud)

即使您不执行多个文件上传,它也应该工作.