I created a download button that downloads the file on click. The problem is when I click the download button, I'm able to see the content that I want to download by using Chrome inspect -> Network -> Response
but it is not opening a window to save the file to my PC.
For example, I'm trying to download text.txt
which contains multiple lines of MY FILE
string. I'm able to see it on Response
tab but how can I download the .txt
file.
Relevant React Code:
<button onClick={(e) => downloadHandler(e)}>Download</button>
let downloadHandler = (e) =>{
const fileName = e.target.parentElement.id;
fetch('http://localhost:3001/download',{
method: 'post',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({id: fileName})
})
}
Relevant Backend Code:
const uploadFolder = `${__dirname}` + `\\uploads\\`;
app.post('/download', function(req, res){
let fileName = req.body.id; // example output: 'dog.jpg'
res.download(uploadFolder+fileName, fileName); // Set disposition and send it.
});
The idea is that I will feed fileName
to backend and then download it with res.download(uploadFolder+fileName, fileName);
line. I think im suppose to use window.open('/download')
but that just opens the homepage on a new tab or maybe I am just placing it wrong.