Hola, no se que pasa que no consigo renombrar el nombre del archivo.
El archivo se escribe correctamente en la carpeta que le indico, pero con el nombre original.
He usado el filter Rename, pero no se que pasa.
Código PHP:
private function _getForm($idTrabajo)
{
$form = new Zend_Form();
$form->setAction($this->view->baseUrl . '/usuario/miTrabajo/entrega')
->setAttrib('enctype', Zend_Form::ENCTYPE_MULTIPART)
->setMethod('post');
//Zend_Debug::dump($this->view->baseUrl . '/trabajos');
$file = $form->createElement('file', 'archivo', array('label' => 'Selecciona un fichero'));
$file->setDestination( Bootstrap::getBaseDir() . $this->_config->rutaArchivos);
$tipos = $form->createElement('select','tipoArchivo', array('label' => 'Tipo de archivo'));
foreach($this->_tipoArchivoModelo->obtenerTodos() as $t){
$tipos->addMultiOption($t->id, $t->tipo);
}
$oculto = $form->createElement('hidden', 'idTrabajo', array('value' => $idTrabajo));
$form->addElement($oculto);
$submit = $form->createElement('submit', 'enviar', array('label' => 'Subir archivos'));
$submit->setIgnore(true);
$form->addElement($file)
->addElement($tipos)
->addElement($submit);
return $form;
y despues lo trato aqui:
Código PHP:
public function entregaAction()
{
if ($this->getRequest()->isPost()){
$formData = $this->_request->getPost();
$idTrabajo = $formData['idTrabajo'];
$form = $this->_getForm($idTrabajo);
$file = $form->archivo;
if( $form->isValid($this->getRequest()->getParams()) ){
$bind = $form->getValues();
$upload = new Zend_File_Transfer_Adapter_Http();
$upload->addFilter('Rename', array('target' => $this->_config->rutaArchivos .'nombreNuevo.jpg',
'overwrite' => true));
if($upload->isUploaded()){
$this->_layout->mensaje = "Archivo guardado correctamente";
$this->_layout->class = "success_message";
$filename = $_FILES['archivo']['name'];
} else {
$this->_layout->mensaje = "Se ha producido un error al guardar el archivo. Vuelva a intentarlo pasado unos minutos.";
$this->_layout->class = "error_message";
}
$this->_forward('index');
}
}
}
Gracias
Un saludo