You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级package:web后Blob下载Excel文件损坏问题咨询

问题原因及修复方案

导致Excel文件损坏的核心原因

  • 数据封装错误:package:web的Blob构造函数要求传入JS原生的字节类对象(如TypedArray、ArrayBuffer),你当前写法[data.buffer.toJS].toJS是把ArrayBuffer包裹在一个JS数组里传给Blob,相当于给文件额外套了一层数组结构,破坏了Excel的原始字节布局,所以打开时提示损坏,但实际数据未丢失,修复后能正常读取。
  • MIME类型不匹配:你设置的text/plain是纯文本的MIME类型,和Excel文件(尤其是xlsx格式)的类型不匹配,这会导致Office软件或浏览器识别文件时出现异常,进一步触发损坏提示。

修复后的代码

final blob = web.Blob(
  [data.toJS], // 直接传入Uint8List对应的JS原生Uint8Array
  web.BlobPropertyBag(
    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // xlsx格式的正确MIME类型
    endings: 'native',
  ),
);
web.HTMLAnchorElement()
  ..href = web.URL.createObjectURL(blob)
  ..setAttribute('download', filename)
  ..click()
  ..remove();

注:如果是旧版xls格式的Excel,MIME类型替换为 application/vnd.ms-excel

内容的提问来源于stack exchange,提问作者Cunibon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:42:10