无论浏览器设置如何,AngularJS总是下载文件

时间:2018-06-04 18:10:18

标签: angularjs node.js express

我有一个带有AngularJS前端的NodeJS应用程序。如果用户请求文件,则将其从节点应用程序流式传输到角度前端。但是前端总是下载文件,无论浏览器设置是什么(例如:Firefox设置为打开PDF文件而不是默认下载它们。)

编码如下:

的NodeJS

[...]
res.writeHead(200, {
    'Content-Type': file.mimetype,
    'Content-Disposition': `attachment; filename=${file.filename};`
    });
let readStream = BlobStore.createReadStream(fileId);

return readStream.pipe(res);
[...]

AngularJS HTML:

[...]
<a class="download-link" href="/api/files/{{file._id.toString()}}" target="_self" flex>
[...]

我也尝试将流转换为Blob,但这对我来说也不起作用。

1 个答案:

答案 0 :(得分:0)

解决方案非常简单:根据Content-Disposition标题(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition)的以下文档,还有另一个参数inline可用。

所以我所要做的就是将NodeJS编码改为:

[...]
res.writeHead(200, {
    'Content-Type': file.mimetype,
    'Content-Disposition': `inline; filename=${file.filename};`
    });
let readStream = BlobStore.createReadStream(fileId);

return readStream.pipe(res);
[...]