我有一个带有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,但这对我来说也不起作用。
答案 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);
[...]