2017-07-03 2 views
0

Ich habe und API-Link, was automatisch startet Datei herunterladen, wenn ich es in der Adressleiste folgen. Nennen wir es my-third-party-download-link-com.Express res.redirect zeigt Inhalte, aber keine Downloads

Aber wenn ich im Express-Framework res.redirect (my-third-party-downloading-link-com) eingestellt habe. Ich erhalte den Statuscode 301 und kann den Dateiinhalt in Vorschau-Registerkarte in Entwickler-Tools sehen. Aber ich kann Browser diese Datei nicht herunterladen.

Mein entsprechender Request-Handler wird wie folgt:

downloadFeed(req, res) { 
    const { jobId, platform, fileName } = req.query; 
    const host = platform === 'production' ? configs.prodHost : 
    configs.stageHost; 
    const downloadLink = `${host}/api/v1/feedfile/${jobId}`; 

    // I also tried with these headers 
    // res.setHeader('Content-disposition', 'attachment; 
    // filename=${fileName}.gz'); 
    // res.setHeader('Content-Type', 'application/x-gzip'); 

    res.redirect(downloadLink) 
} 

PS Nun, dieses Problem zu lösen, ich baue my-Drittanbieter-Download-Link-com auf Back-End, es sendet mit res.end und dann:

window.open(**my-third-party-downloading-link-com**, '_blank'). 

Aber ich mag diese Lösung nicht. Wie kann ich dem Browser mitteilen, dass er Inhalte von dieser Drittanbieter-API herunterladen soll?

Antwort

-1

Entsprechend der Dokumentation sollten Sie res.download() verwenden, um zu erzwingen, dass ein Browser den Benutzer zum Download auffordert.

http://expressjs.com/es/api.html#res.download

+0

Sie sind nicht richtig. Wir sprechen über Link von Drittanbietern, nicht über Datei auf dem Dateisystem des Servers. –

+0

ok, dann können Sie diese andere Frage überprüfen, könnte es hilfreich sein https://stackoverflow.com/questions/26288055/how-to-send-a-file-from-remote-url-as-a-get-response -in-Knoten-js-express-app –

Verwandte Themen