Java - Envío de fichero simulando ajax

   
Vista:

Envío de fichero simulando ajax

Publicado por Sepharat (13 intervenciones) el 27/10/2010 12:25:43
Hola, estoy intentando hacer una ventana en mi aplicación JEE en la que se desea adjuntar un fichero a un email. Me gustaría poner un campo tipo 'file' con un botón de aceptar al lado para ejecutar un servlet que almacene el fichero en el servidor mientras el usuario permanece en la misma página. He conseguido que funcione usando un iframe como target del formulario. El problema que tengo es que me gustaría que la respuesta del servlet devolviera un código que ocultase el gif de progreso que he puesto en la página y que se ejecuta en cuanto se pulsa el botón de aceptar. El código es éste:

<div id="divFichero">
<form enctype="multipart/form-data" method="post" action="/AdjuntarFichero" target="prueba" onsubmit="ocultarForm();">
<input type='file' name="fichero" id="fichero" value="Examinar"/>
<input type='submit' value="Aceptar" />
</form>
</div>
<div id="loading" style="visibility:hidden;">
<img src="/images/loader.gif" id="imagen"/>
Cargando...
</div>
<iframe id="prueba" name="prueba" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>

function ocultarForm(){
document.getElementById("divFichero").style.visibility = "hidden";
document.getElementById('loading').style.visibility = 'visible';
}

Lo máximo que consigo es ejecutar javascript en la vuelta con el PrintWriter del response pero no tengo acceso a los elementos de la página actual en la que me encuentro.

PrintWriter writer = response.getWriter();
writer.println("<script language='javascript' type='text/javascript'>document.getElementById('loading').style.visibility='hidden';</script> ");
writer.flush();
writer.close()

El ejemplo que he seguido lo he sacado por internet pero en él utilizan php en lugar de java por lo que no sé cómo adaptarlo
¿Alguien sabe como lo puedo hacer?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Envío de fichero simulando ajax

Publicado por Maverick (96 intervenciones) el 28/10/2010 19:07:12
Hola Sepharat,

Puedes hacer que desde el Servlet te redireccione a una segunda página (HTML o JSP) donde muestre el mensaje "Archivo cargado." Acuerdate que cuando se hace clic en el botón "Aceptar" quien toma el control es el Servlet.

Es una sugerencia, cualquier cosa no dudes en escribir a mi correo: oscardelphi@gmail.com

Saludos

Maverick
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Envío de fichero simulando ajax

Publicado por Sepharat (13 intervenciones) el 29/10/2010 09:56:33
Eso ya lo he intentado y me funciona bien. El problema es que me gustaría tener control sobre la página que hace el envío o, si no puede ser sobre esa, sobre otra ventana que muestre que se está cargando el archivo. Así podría dejar un gif animado que indique que el servidor está haciendo algo y luego cambiarlo cuando reciba señal del servidor diciendo si se ha cargado correctamente o si ha habido algún error. Redireccionando únicamente a una ventana cuando acaba la tarea, como el archivo sea demasiado grande o la red vaya mal, puede hacer que el usuario no sepa si está haciendo algo o si se ha quedado clavada la pantalla.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar