使用res.download

问题描述

我有一条这样的路线:

exports.downloadFile = app => {
    app.get('/install/download',(request,result) => {
        result.download(`${__dirname}../../../public/exec/install.exe`,error => {
            if (error) console.log("[FAILURE][RESOURCE] Could not download installation file\r\n");
            else console.log("[SUCCESS][RESOURCE] Installation file has been downloaded\r\n");
        });
    });
}

通过这种途径,我试图确保当我单击按钮时,此文件被下载。当我单击该按钮时,会收到一条消息,指示成功,但是我的浏览器未指示任何下载,也没有提示我执行任何操作。我是否需要添加一些其他组件以确保其正常工作?

这是我客户端进行提取代码

const downloadFile = () => {
    const url = `${window.location.protocol}//${window.location.host}/install/download`;
    fetch(url)
        .catch(error => alertMessage(error.message));
}

我假设可能与没有.then来处理提取有关,但是我不确定应该在其中添加什么,而且浏览器自动处理的文档给我的印象是这部分?

解决方法

您忘记传递一个下载名称参数。 请按如下所示修改下载功能。

result.download(`${__dirname}../../../public/exec/install.exe`,'install.exe',error => {
            if (error) console.log("[FAILURE][RESOURCE] Could not download installation file\r\n");
            else console.log("[SUCCESS][RESOURCE] Installation file has been downloaded\r\n");
        });