gpt4 book ai didi

javascript - 从服务器下载Excel文件并保存在客户端

转载 作者:数据小太阳 更新时间:2023-10-29 04:12:37 25 4
gpt4 key购买 nike

我有一个 JavaScript 应用程序和一个 API,可以创建一个 Excel 文件并返回一个包含以下 header 的字节数组:

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition:attachment; filename=List.xlsx

当我转到 Excel 资源 API URL 时,系统提示我下载 Excel 文件。如果我这样做,它会很好地下载并在 Excel 中打开。一切都很好。

现在的问题:

我不希望在用户的浏览器窗口中公开 API URL,因此我的目标是:

  • 通过 AJAX XMLHttpRequest 下载 Excel 文件
  • 将内容(字节数组)存储在 Blob 中
  • 使用 Blob 创建数据 URI
  • 在弹出窗口中打开数据 URI,提示用户下载 Excel 文件

我的是这样的:

它会下载文件,但当我尝试打开文件时,Excel 无法将其识别为有效的 Excel 文件。

// "data" is the contents from the server

var reader = new FileReader();
var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
reader.readAsDataURL(blob);

reader.onloadend = function (e) {
window.open(reader.result, 'Excel', 'width=20,height=10,toolbar=0,menubar=0,scrollbars=no', '_blank');
}

最佳答案

我成功了。我只需要将以下内容添加到我的 XMLHttpRequest 对象中:

responseType: 'arraybuffer'

但它在IE 中不起作用,因为IE 无法打开数据URI。甚至 IE11 也不行。

无论如何我找到了a great library called FileSaver.js它处理所有主要浏览器(包括 IE10+)的保存文件

关于javascript - 从服务器下载Excel文件并保存在客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com