ZendFramework Zend_Form_Element_File setDestination vs rename filter

时间:2010-03-17 05:09:24

标签: zend-framework

代码说不推荐使用Zend_Form_element_File :: setDestination()并使用重命名过滤器。但是,重命名过滤器当前是代码,以便在设置路径时,仅给出临时名称。原始文件名丢失。

<?php
$file = new Zend_Form_Element_File();
$file->setDestination('/var/www/project/public');
?>

vs

<?php
$file = new Zend_Form_Element_File();
$file->addFilter('Rename', array('target' => '/var/www/project/public'));
?>

上传文件的任何解决方案,以便保留原始文件名结构但检查现有文件并附加_1.ext或_2.ext?

2 个答案:

答案 0 :(得分:1)

您需要在上传后查询文件名,然后添加重命名过滤器。例如:

if ($form->file->isUploaded()) {
    $fileinfo = $form->file->getFileInfo();
    $filename = $fileinfo['file']['name'];
    $extn = pathinfo($filename,PATHINFO_EXTENSION);
    $uploadname = $this->_makeFilename($formData, $extn);
    $uploadfilepath = UPLOADED_FILES_PATH . '/' . $uploadname;
    $form->file->addFilter('Rename', $uploadfilepath);
    $receiveStatus = $form->file->receive();
}

答案 1 :(得分:0)

提交表单后,您可以检查$_FILES['file_element']['name']检查现有文件,然后在调用以下内容之前在表单元素上设置重命名过滤器:

$form->getValues()/isValid() or $form->file_element->receive()