最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如果文件没有扩展名,电子应用程序的 Nodejs http 服务器未设置正确的本地文件内容类型标头

网站源码admin45浏览0评论

如果文件没有扩展名,电子应用程序的 Nodejs http 服务器未设置正确的本地文件内容类型标头

如果文件没有扩展名,电子应用程序的 Nodejs http 服务器未设置正确的本地文件内容类型标头

我使用 electron 和 nodejs 创建了一个桌面应用程序。在这里,我正在下载一些 html、css 和 js 以及其他资产文件,如图像、视频以在本地呈现网页。正在使用 window.fetch 下载文件并保存在本地。下载并保存的 HTML 文件没有文件扩展名。需要时会创建一个 nodejs http 服务器来提供文件。如果文件有扩展名,则来自 nodejs 服务器的响应包含正确的内容类型标头,但当没有扩展名时,响应包含 application/octet-stream 作为内容类型。因此,当从 nodejs 服务器请求本地保存的 HTML 文件时,不是呈现/显示 HTML 文件,而是弹出窗口来保存文件。 尝试使用 file-type 来检测文件类型并设置内容类型作为响应,但它不适用于 HTML 文件。 如果从电子应用程序切换到 chromeos 应用程序,那么它工作正常。

尝试使用 file-type 检测文件类型并设置内容类型作为响应,但它不适用于 HTML 文件。

下面是下载文件的代码。 url 是 HTML 文件和资源的 url,如 css、js、图像等。

     download: {
        value: function(url, destination, settings = {}) {
            const fse = global.nodeRequire('fs-extra');
            const nodePath = global.nodeRequire('path');

            return this.fetch(url, settings).then(response => {

                if (!response.ok) {
                    return Promise.reject(new Error(response.code));
                }

                return fse.ensureDir(nodePath.dirname(destination))
                    .then(() => nodeWriteStream(destination, response));
            });
        }
    }   
回答如下:
发布评论

评论列表(0)

  1. 暂无评论