要练习我的节点,我试图制作一个文件下载器。目的是从数据库(当前为mp3)中获取文件的url,将其下载到项目中,并在客户端上用作href。
我设法实现了诺言,并下载了文件,但是文件说的是空的,但是当我进入项目时,可以很好地打开文件(mp3)。
这是我到目前为止所拥有的:
.then(() => {
Promise.resolve()
.then(() => {
return new Promise(resolve => {
console.log("Started download");
// req.body.total_source is the full url of the file
console.log(req.body.total_source);
setTimeout(() => {
download(req.body.total_source, "dist").then(() => {
console.log("downloaded!");
resolve();
});
}, 1000);
});
})
.then(() => {
console.log("success page rendered");
res.render("success", {
// only get file name from url
song_link: req.body.total_source.substring(
req.body.total_source.lastIndexOf("/") + 1,
req.body.total_source.length
),
song_source: req.body.total_source,
name: req.body.name
});
});
})
按钮设置为(使用ejs):
<a href="/dist/<%= song_link %>" download>Download <%= name %></a>
有人能指出我正确的方向吗? console.logs都显示下载成功,而不显示成功页面,因此我不确定为什么会显示“失败-空文件”。
答案 0 :(得分:0)
已修复:我认为问题在于,当我将项目设置为使用“公共”文件夹中的客户端资产时,我将文件保存到dist文件夹中。将文件保存到“ / public / assets”,已解决问题:
download(req.body.total_source, "public/assets");