1

我在 HTML 中有一个下载按钮,单击该按钮时,会通过 ajax 发出 POST 请求,发送必须下载的文件的文件名。

在服务器端,我做这样的事情:

function download (req, res) {

    ...
    // path is an absolute path to a file that is not in the public
    // directory. I want to download that file
    res.writeHead(200, {
        "Content-disposition": "attachment;filename=\"" + path + "\"",
        "Content-Type": "text/csv"
    });

    var filestream = fs.createReadStream(path);
    filestream.pipe(res);
};

我可以在响应中看到文件内容,但没有出现保存文件对话框。

哪个是问题?我怎样才能解决这个问题?

我只使用内置的节点模块,所以我不使用 express。

4

1 回答 1

1

您不能强制浏览器显示“保存文件”对话框。

以您的示例为例,在我的 Mac 上,Chrome 和 Safari 都会自动下载文件(在 Chrome 中,这是一个设置是否显示对话框,我认为该对话框默认是关闭的;我不知道 Safari 是否有类似的设置),而 FireFox 确实给了我一个对话框。

于 2013-10-16T13:32:56.510 回答