nodo / express Fuerza al navegador a descargar el archivo con nombre personalizado
He creado un sitio web de nodo / express para mi proyecto universitario que, después de buscar una ID de una ley, muestra una gran tabla con todos los archivos en diferentes formatos e idiomas relacionados con esta identificación. Yo uso el módulo "http-proxy"para solicitar y entregar estos archivos al cliente. No hay nada malo al servir archivos xml, xhtml, html y pdf (todos los navegadores pueden verlos directamente). Tengo problemas con los archivos .zip y .rdf. Los archivos no están dañados pero están perdiendo el nombre original
Cuando hago clic en el icono ZIP, aparece el mensaje de descarga, pero estoy perdiendo el nombre del archivo original (el archivo se llamará "proxy" o "proxy.zip", diferentes comportamientos en diferentes navegadores)Cuando hago clic en el icono RDF, algunos navegadores abren el archivo directamente en el navegador, algunos navegadores no reconocen el formato, algunos navegadores quieren descargarlo con el nombre "proxy")Entonces descubrí el atributo HTML5 "descargar" de la etiqueta "a". Simplemente resuelve mi problema, de todos modos no es compatible con todas las versiones de Internet Explorer y Safari. Navegando por la web encontré algunas soluciones para agregar "Haga clic derecho y guardar como ..." después de un enlace div cuando la página se ve en IE o Safari, pero esta solución no es para mí, porque no estoy hablando de un solo enlace pero una tabla llena de enlaces. Y mi sitio también debe funcionar en teléfonos móviles.
¿Hay alguna forma de escribir algún código del lado del servidor para obligar a los navegadores a descargar archivos con un nombre de archivo personalizado?
Aquí está el pequeño fragmento de código del proxy:
var httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({ ignorePath: true });
app.get('/proxy', function(req , res) {
var file = req.query.file;
var realurl = 'http://'+cfg.edb_opt.host+':'+cfg.edb_opt.port+cfg.edb_opt.rest+file;
console.log('Proxy: serving '+realurl);
proxy.web(req, res, { 'target': realurl });
});
Todas las variables cfg * provienen de un archivo de configuración json para establecer el host, el puerto y la ruta de inicio donde están contenidos los archivos.
Gracias por adelantado :)