miércoles 9 de julio de 2008

Problema al subir archivos con Safari


Recientemente nos encontramos con un problema al intentar subir archivos (de texto) a un sitio web (parte de un proyecto) utilizando Safari.


El navegador intenta (aparentemente) subir el archivo, pero al final falla y en algunos casos despliega un mensaje indicando que el servidor no responde. El problema no se al utilizar navegadores basados en Gecko (como Firefox).

Como referencia, en este proyecto estamos utilizando Zend_Framework versión 1.5.2; sin embargo aclaramos que la pulga no tiene nada que ver con su uso, es por ello que en este artículo usted podrá descubrir la solución.

Si usted es muy impaciente, simplemente agregue header("Connection: close"); a la página donde se encuentra el formulario.

Ahora bien, supongamos que nuestro controller se llama: UploadController y que el el formulario se encuentra en index.phtml, que es controlado por el método indexAction(). A continuación un poco de código.

El formulario:
<form enctype="multipart/form-data" action="/upload/doit"
method="post">
Filename:<input type="file" name="archivo" id="archivo" />
<input type="submit" id="submit" />
</form>

El método:
public function  indexAction()
{
header("Connection: close");
}
Con la intención de comprobar el funcionamiento la carga de archivo, el método doitAction() está definido de la siguiente manera:
public function  doitAction() 
{
echo "<pre>";
print_r($_FILES);
echo "</pre>";
exit;
}

Si al intentar subir un archivo, doitAction() muestra los detalles del archivo, el problema ha sido resuelto.No existe evidencia lógica para pensar que este problema tenga alguna relación con el uso del framework, lo mismo podría suceder usando otros frameworks como CodeIgniter, Qcodo, etc. Si este es el caso, o bien no está utilizando ningún framework, intente adaptar y aplicar la solución para impacientes.

0 comentarios: