如何阻止Express.js导致文件在浏览器中下载?

时间:2017-11-17 09:12:37

标签: javascript node.js express

在浏览器中,我正在尝试使用iframe预览文件(Word文档):

<table>
    foreach(parent-row in parent-table)
    {
        <tr>
            <!-- parent table data of each row in "td"s with rowspan -->
            foreach(child-row in child-table) // this loop will iterate only once
            {
                <!-- child table data of first row in "td"s without rowspan -->
            }
            <!-- remaining parent table data of each row in "td"s with rowspan -->
        </tr>
        <!-- parent table row with first row of child table for that parent table row created -->
        <!-- creating the remaining rows of the child table -->
        foreach(child-row in child-table) // this loop will iterate (rowspan - 1) times
        {
            <tr>
                <!-- child table data of each row except first row in "td"s without rowspan -->
            </tr>
        }
    } // parent table row with its corresponding child table fully constructed
</table>

(如果相关,则为图书馆:http://viewerjs.org

在服务器端,我正在从流(MongoDB / GridFS)中检索文件,然后将其传送到res对象。相关代码是:

<iframe style="float:right;" src = "/ViewerJS/#../demo/ohm2013.odp" width='400' height='300' allowfullscreen webkitallowfullscreen></iframe>

在浏览器端,这会在本地下载文件而不是预览文件。

如何让浏览器预览我的文件而不是下载?

1 个答案:

答案 0 :(得分:1)

您只能向浏览器建议如何处理该文件;最终取决于浏览器及其配置。

我认为默认行为是尝试以内联方式显示内容,但可能不会针对某些类型;您可以在发送任何数据之前使用Content-Disposition 在响应中使用值inline发送res.set标头明确建议内联显示:

res.set("Content-Disposition", "inline");

建议向浏览器显示内联文件,而非提供保存文件。但同样,浏览器仍然可以提供保存它。