【问题标题】:Download a .gz file using jQuery使用 jQuery 下载 .gz 文件
【发布时间】:2020-05-26 03:34:02
【问题描述】:

我必须调用远程服务来下载 gzip 压缩文件 (csv.gz)。 我必须使用 jQuery,因为我必须设置 Authentication HTTP 标头。 我尝试过这样的事情:

$.ajax({
                type: "GET",
                url: url
            }).done(function (res) {
                const a = document.createElement('a');
                a.style = 'display: none';
                document.body.appendChild(a);
                const blob = new Blob([res]);
                const url = URL.createObjectURL(blob);
                a.href = url;
                a.download = _this.attributes.id + '.' + _DEFAULT_DOWNLOADED_FILE_EXTENTION;
                a.click();
                URL.revokeObjectURL(url);
            }).fail(function (err) { });

我可以下载该文件,但下载后,我尝试在我的电脑上解压缩,但文件不正确(已损坏)。可能我使用的 Blob 创建不正确。

【问题讨论】:

  • 二进制数据以Content-type: application/octet-stream 发送。您可能必须在 jQuery 请求中或在创建 Blob 时声明这一点。

标签: javascript jquery ajax blob


【解决方案1】:

您正在尝试下载二进制数据,您可以使用 JavaScript 中的类型化数组获取它,here 是 MDN 中的一个示例。

关于设置 Authentication 标头,您不需要 jQuery。 Here 的 XHR API 使您能够做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多