我想知道是否可以根据GET请求直接从浏览器下载文件。
我有一个node.js API,我正在使用它来提供一些文件,而当我从浏览器中对资源发出get请求时,我想要直接下载它们。如果可能,我必须发送什么?完整的二进制文件,通过响应传递...?这让我有些困惑。
server.js
app.get('/document', async (req, res) => {
const { filename } = req.query;
const filepath = `${os.tmpdir()}/${filename}`
try {
var file = fs.readFileSync(filepath);
return res.status(200).send({ msg: 'File read successfully', file: file })
} catch (err) {
return res.send({ msg: 'Problem reading file.', err: err.toString() })
}
})
答案 0 :(得分:0)
找到了解决问题的两种方法;
1。使用express中的res.download方法
try {
return res.download(filepath [, filename])
} catch (err) {
return res.send({ err: 'Problem reading file.', msg: err.toString() })
}
- 发送二进制文件和特殊标头
try {
var file = fs.readFileSync(filepath);
res.setHeader('Content-disposition', `attachment; filename=${filename}`);
return res.status(200).send(file)
} catch (err) {
return res.send({ err: 'Problem reading file.', msg: err.toString() })
}