Inicar descargas desde un applet- ayuda por favor!!!

Federico
15 de Noviembre del 2005
Hola! soy nuevo por aca. Mi consulta es la siguiente:

Necesito saber como puedo hacer para que cuando el usuario haga clic en un boton dentro del applet, se inicie la descarga de un archivo que se encuentra en la misma computadora que la pagina con el applet. ¿Existe alguna manera de que el applet le mande un mensaje al browser que lo contiene, para que este inicie la descarga? ¿o deberia usar el File Dialog de swing para que el usuario eliga la ubicacion donde desea guardar el archivo bajado, y luego usar alguna funcion de java para guardarlo ahi?de ser asi, ¿que q funcion deberia usar para copiar el archivo a la destinacion elegida por el usuario, para no tener que crear un nuevo archivo y copiar byte por byte desde el archivo original?¿existe alguna otra opcion?

Espero que puedan ayudarme! muchas gracias.

chuidiang
15 de Noviembre del 2005
Hola:

La verdad es que lo veo difícil.
No sé si el applet puede indicarle algo al navegador, nunca he visto ni oido nada sobre el tema.
Desde al Applet además sí podrías traer el fichero del servidor, pero no puedes escribirlo en el disco del usuario. Por temas de seguridad un Applet no puede acceder a ningún recurso (disco duro entre otros) del usuario. La única opción a esto (que nunca he probado) es firmar el Applet. De esta forma se preguntará al usuario si se fía de esta firma y si dice que sí, podrás escribr en el disco duro.

Se bueno

Federico
15 de Noviembre del 2005
Gracias chuidiang!!

El practico que me pidieron es un poco simple:
En realidad la pagina con el applet, la base de datos y el archivo a descargar (o sea lo que seria correspondiente al servidor segun entiendo) se encuentran en la misma computadora que seria el cliente, o sea que la descarga seria mas bien copiar un archivo de una carpeta a otra, solo que deberia hacerlo de la forma que se vea lo mas parecida posible a una descarga de la web.
Desde ese punto de vista no creo que me de problemas por el tema de la seguridad, no?

de todos modos, si necesitara hacerlo desde un servidor y firmar el applet como decis, sabes como puedo hacer la parte de la escritura??

chuidiang
15 de Noviembre del 2005
Hola:

Un Applet no puede escribir en el disco duro del cliente. Tampoco puede hacerlo en el del servidor (aunque sea el mismo), salvo que el servidor web tenga algún mecanismo para ello (servlets o similar). El problema de seguridad lo vas a tener igual, el navegador no va a permitir al Applet escribir en el disco duro.

Lo de la firma no lo he hecho nunca, pero en http://chuidiang.blogspot.com/2005/09/merencianotk-ver-tema-como-firmar-un.html tienes una pequeña guia de como hacerlo.

Se bueno.

Fedeico
15 de Noviembre del 2005
Gracias de nuevo por tu tiempo, voy a probar eso de firmar el applet. aun asi, como una vez que tengo permisos para acceder al disco para copiar el archivo de una carpeta a otra? porque lo unico que encuentro en manuales y tutoriales es como crear y/o modificar un archivo, pero no me parece que sea eficiente crear un nuevo archivo en la carpeta destino y copiar byte a byte el contenido del original :S ¿¿que otra forma teng de hacer esto??

chuidiang
15 de Noviembre del 2005
Hola de nuevo:

La forma buena de hacerlo es copiando byte a byte como tú dices. De todas formas puedes usar los métodos que leen arrays de bytes y escriben arrays de bytes. Es mas eficiente.

Otra opción es con Runtime.getRuntime().exec ("cp fichero1 fichero2"), usando el copy del sistema. La pega de esto es que deja de ser java reutilizable, porque el comando cp de cada sistema operativo es distinto.

Se bueno.