Solución:
Básicamente, existen dos formas populares de descargar un archivo.
1. Establecer window.location
Configuración window.location
a la URL de descarga se descargará el archivo.
window.location = '/path/to/download?arg=1';
Una versión ligeramente diferente de esto es abrir una nueva pestaña con la ruta de descarga.
window.open("https://foroayuda.es/path/to/download", '_self');
2. Haga clic en el enlace virtual
Con HTML5, puede especificar el download
atributo de un enlace. Al hacer clic en el enlace (incluso mediante programación), se activará la descarga de la URL. Los enlaces ni siquiera necesitan ser parte del DOM, puede crearlos dinámicamente.
var link = document.createElement('a');
link.href="https://foroayuda.es/path/to/download";
link.download = 'local_filename.csv';
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
link.dispatchEvent(e);
Esto no es compatible con todos los navegadores, por lo que incluso si desea utilizar este método, tendrá que dejar de admitir algunos navegadores o recurrir al primer método.
Afortunadamente, esta excelente respuesta hace referencia a un pequeño js
biblioteca que ya hace todo esto: http://pixelscommander.com/polygon/downloadjs/#.VrGw3vkrKHv
downloadFile("https://foroayuda.es/path/to/download");
Descarga en 2 pasos
Otra convención que verá a menudo es una descarga de dos pasos, donde la información se envía al servidor en una URL conocida, y el servidor devuelve una URL o identificación generada que se puede usar para descargar el archivo.
Esto puede ser útil si desea que la URL sea algo que se pueda compartir, o si tiene que pasar muchos parámetros al generador de descargas o simplemente desea hacerlo a través de un POST
solicitud.
$.ajax({
type: 'POST',
url: '/download/path/generator',
data: {'arg': 1, 'params': 'foo'},
success: function(data, textStatus, request) {
var download_id = data['id'];
// Could also use the link-click method.
window.location = '/path/to/download?id=' + download_id;
}
});