首页 > 解决方案 > 使用 jQuery 下载 .gz 文件

问题描述

我必须调用远程服务来下载 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 创建不正确。

标签: javascriptjqueryajaxblob

解决方案


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

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


推荐阅读