2010-03-17 7 views
0

Le code dit Zend_Form_element_File :: setDestination() est obsolète et utilise le filtre renommer. Cependant, le filtre renommer est actuellement des codes tels que lorsque le chemin est défini, seul le nom temporaire est donné. Le nom de fichier original est perdu.ZendFramework Zend_Form_Element_File setDestination vs renommer le filtre

<?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')); 
?> 

Toute solution pour télécharger des fichiers, afin de préserver la structure du nom de fichier d'origine, mais vérifie les fichiers existants et _1.ext ou _2.ext ajoute?

Répondre

0

Après avoir soumis le formulaire, vous pouvez inspecter le $_FILES['file_element']['name'] vérifier les fichiers existants, puis définissez le filtre de changement de nom sur votre élément de formulaire avant d'appeler le:

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

1

Vous devez interroger le nom du fichier après le téléchargement, puis ajouter le filtre Renommer. Exemple:

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(); 
}