从Node.js Express 4应用程序下载.exe时出现网络错误
[尝试从我的Nodejs Express应用程序下载.exe时,下载失败并出现网络错误。
这是路线。
let path = require("path");
let pathToTools = path.join(__dirname, "../public/tools/");
router.get("/download/testrunner/windows", (req, res) => {
res.download(`${pathToTools}/windows/testrunner.exe`);
});
这是链接。
<a href="/tools/download/testrunner/windows"><i class="fas fa-download"></i></a>
我尝试从发现的帖子中将这种方法与fs一起使用,但仍然存在相同的错误。
let filename = "testrunner.exe";
res.setHeader('Content-disposition', 'attachment; filename='+filename);
//filename is the name which client will see. Don't put full path here.
res.setHeader('Content-type', 'application/x-msdownload'); //for exe file
var file = fs.createReadStream(`${pathToTools}/windows/testrunner.exe`);
//replace filepath with path of file to send
file.pipe(res);
//send file
回答如下:所以.....我是个白痴.....我加了一个额外的正斜线.....
在下面的变量中,我在工具后面添加了一个正斜杠。
let pathToTools = path.join(__dirname, "../public/tools/");
在res.download中,我添加了另一个正斜杠,使路径不正确。...
res.download(`${pathToTools}/windows/testrunner.exe`);
所以路径看起来像这样。...
../public/tools//windows/testrunner.exe