我尝试用docx文件响应浏览器,以便客户端可以预览它。
下面是我尝试过的两种方法:
const rs = fs.createReadStream(fullPath);
res.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
rs.pipe(res);
const file = await fs.readFile(fullPath); // this time fs is imported from fs/promises
res.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
res.status(200).send(file);
问题是两个方法都触发下载。相反,我想要的是预览文件。在MS Edge上,如果您打开this dummy docx file,它会将您重定向到MS Word的Web版本以便能够预览它。但是,可以在iframe as shown in this question中查看文件。然而,当我提供我的api url时,iframe说它无法打开这个文件,很可能是因为我的服务器没有正确地响应这个文件。当给定iframe this url时,文档正确显示。
所以问题是:* * 如何从服务器发送文件而不触发下载,但可以预览?**
1条答案
按热度按时间oknwwptz1#
要从服务器预览文件而不触发下载,您可以将
Content-Disposition
标头设置为inline
。这将向浏览器建议内容应显示在浏览器中。这通常仅在浏览器知道如何处理文档类型时才起作用:参考文件:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition