entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Descarga de documentos desde JavaScript

Buenas, estoy intentando realizar la descarga de archivos desde JavaScript en si la información ya la puedo traer (Es un binario con toda la información) el problema radica en querer recrear el archivo ya que al parecer no se genera correctamente ya intente recrearlo desde el servidor con System.IO.File.WriteAllBytes (C#) y todo anduvo a la perfección; existe un "equivalente" de dicha función en JS?

2 Respuestas

3votos

Leonardo-Tadei Puntos227320

Hola @AdanCervera,

por restricciones de seguridad, JavaScript corriendo en el navegador no puede acceder directamente al disco.
(si fuera posible, podría leer o sobrescribir cualquier archivo del usuario!)

Sin embargo, el navegador por default intentará guardar cualquier archivo que no pueda visualizar, o visualizarlo si es posible. Por qué simplemente no hacés que el JavaScript haga que el navegador vaya al URL de descarga del archivo? Esto debería funcionar independienetemente de que sea un archivo que existe o que se apunte a un script en el servidor que genera la salida.

En este escenario, al apuntar el navegador al URL, por ejemplo con un window.location(), el navegador abrirá la ventana de descarga.

Saludos cordiales

1voto

AdanCervera comentado

Muchas gracias @Leonardo-Tadei si, al final termine optando por esa solución ya genero el documento en el servidor y envió la url del documento en cuestión ya solo creare un proceso para limpiar esa carpeta para no saturar el espacio del server; muchas gracias!

1voto

Leonardo-Tadei comentado

Hola @AdanCervera,

me alegra que te haya servidor la respuesta.

Podrías refinar un poco tu solución haciendo que el URL que enviás al documento sea al script generador de los archivos, por ejemplo:

procesar-documento.php?ref=abcd

en dónde procesar-documento.php es el que genera el archivo o el que llama a los que generan archivos, y el parámetro ref=abcd sería la forma de saber qué archivo generar.

Luego indicando en la cabecera de la respuesta de procesar-documento.php que es un archivo con cierto nombre, cierto tipo MIME e indicando que es una descarga, generarías el archivo por demanda y no tendrías qeu borrar temporales, porque no existirían...

Podrías implementar esto con header() para decir qué archivo es y cuál es el nombre, y la salida ser el mismo proceso de generación que tenés ahora.

Saludos cordiales!

2votos

jrgm0005 Puntos2990

Hola @AdanCervera,

Tal y como dice @Leonardo-Tadei es "imposible" que JS pueda guardar un fichero en disco, ya que se ejecuta dentro de tu browser.

Tú puedes acceder a un fichero y apuntar a él, para forzar la descarga del mismo, pero no será crear un fichero, sería como hacer una copia del mismo.

Espero que te haya quedado más claro.

Un saludo

Juan Ramón González Morales

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta