-1

I try to download a file using nodejs and Javascript. When I call the URL in the Browser, the file gets downloaded. When I call this Endpoint in my javascript file using fetch, the download doesn't work

NodeJS Endpoint

app.get("/download", function (req, res, next) {
    res.download(
        filepath
    );
});

Javascript Call

const downloadFile = async (path) => {
await fetch("http://localhost:8080/download", {
    method: "Get",
})
    .then((response) => {
        console.log(response);
    })
    .catch((error) => {
        console.log(error);
    });

};

Do you have any suggestions?

Thank you very much!

jansemrau
  • 231
  • 3
  • 11
  • https://stackoverflow.com/questions/32545632/how-can-i-download-a-file-using-window-fetch – Sourabh Somani Jan 12 '22 at 10:03
  • Does this answer your question? [How can I download a file using window.fetch?](https://stackoverflow.com/questions/32545632/how-can-i-download-a-file-using-window-fetch) – Sourabh Somani Jan 12 '22 at 10:03

1 Answers1

1

When you make a request using Ajax then the response is passed back to the JavaScript code for handling.

If you want to do something with the file the server has sent you, then you need to write JavaScript to do something with it.

Your JavaScript logs the response object then stops.

The browser will only automatically render it in the viewport / save it to downloads if you type the URL into the address bar / click a link / etc. Doing Ajax explicitly avoids that automatic handling.

So the solution here is: Don't use Ajax. Use a link, or assign a value to location, etc.

Quentin
  • 914,110
  • 126
  • 1,211
  • 1,335
  • Thanks for your explanation! I changed the button to an a tag and set the href attribute to the link. now it works! – jansemrau Jan 12 '22 at 10:18