Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Descargar un fichero, tengo el array de bytes desde Javascript

Estas en el tema de Descargar un fichero, tengo el array de bytes desde Javascript en el foro de Javascript en Foros del Web. Buenas! Y antes de nada perdón si esto esta resuelto antes pero no lo he encontrado. La cuestión es que tengo un aplicación de gestión ...
  #1 (permalink)  
Antiguo 15/05/2013, 06:38
 
Fecha de Ingreso: julio-2012
Ubicación: Palma de Mallorca
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
Descargar un fichero, tengo el array de bytes desde Javascript

Buenas!

Y antes de nada perdón si esto esta resuelto antes pero no lo he encontrado.

La cuestión es que tengo un aplicación de gestión de documentos,entre otras cosas se pueden visualizar y descargar.
Para descargar uno monto un enlace al cargar la página, y dentro del <a href=....> pongo el link a un formulario, pasandole entre otras cosas el id del documento para mi BD. monta dicho archivo, lo mete en el response y al volver la página, todo correcto.
Mi problema es que he implementado, la posibilidad de, mediante checkbox, marcar varios documentos para descargar, una vez hecho, al pulsar sobre descargar, monto una cadena,matriz o lo que sea, con los ids de estos documentos, y una función ajax, llama a un procedimiento que mete todos esos documentos en un zip, pero claro al regresar a la función ajax, en el success, tengo una preciosa cadena [45,63,46,45,002.....] y no se como narices hacer que me salga el cuadro para abrir o guardar este zip, desde el success del ajax.

Espero que me haya explicado bien, que entre que no me quiero enrollar demasiado y soy algo novato, no se yo :)

Alguna sugerencia?

Gracias de antemano
  #2 (permalink)  
Antiguo 15/05/2013, 08:20
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Descargar un fichero, tengo el array de bytes desde Javascript

no puedes usar ajax para peticiones que devuelven archivos binarios, simplemente porque JS no tiene acceso al IO y no puedes escribir de ninguna manera el archivo devuelto en el sistema de archivos local del cliente.

usa una petición normal y no ajax para ese caso, incluso un:

window.open('url','_blank');

te sirve, sólo debes de añadir del lado del servidor los headers para force-download, de ése modo el navegador lo detectará, abrirá el dialogo de descarga y cerrará la ventana nueva _blank
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 16/05/2013, 07:22
 
Fecha de Ingreso: julio-2012
Ubicación: Palma de Mallorca
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Descargar un fichero, tengo el array de bytes desde Javascript

Buenas!

Oks, muchas gracias por la respuesta. Tarde en contestar porque tuve que cambiar unas cuantas cosas para poderlo probar.
Si que me sirve, monto una lista con los ids que necesito, monto la url y tal y como dices uso:
window.open(url,'_blank');
para llamarla,en vez de ajax, y en esta otra pagina, ya saco toda la información que necesito, monto zip... y lo devuelvo en el response:

Response.ContentType = "application/force-download";
Response.AppendHeader("content-disposition", "attachment; filename=" + name + ".zip");
Response.OutputStream.Write(zip, 0, zip.Length);

Y me va de cine.

Solo una preguntilla más, como harias para que al volver del response, despues del diálogo de la descarga, ejecutase una función?, en mi caso un reload del grid, porque antes lo hacia en el success del ajax, y controlaba un poco la linea de tiempo, pero ahora, ponga lo que ponga despues se lo pasa por el forro.

Muchas gracias de nuevo
  #4 (permalink)  
Antiguo 16/05/2013, 12:38
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Descargar un fichero, tengo el array de bytes desde Javascript

recuerda que en ésa petición no puedes hacer más nada que devolver el binario.

pero Nada te impide hacer el reload del grid después del window.open:

window.open(url,'_blank');
//código para reload del grid
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 20/05/2013, 03:45
 
Fecha de Ingreso: julio-2012
Ubicación: Palma de Mallorca
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Descargar un fichero, tengo el array de bytes desde Javascript

Buenas!!

Si muchas gracias pr tu respuesta, antes no me lo hacía pero era por un error tonto.
Ya esta solucionado.

Muchas gracias de nuevo :)

Etiquetas: ajax, fichero, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:16.