You need to enable JavaScript to run this app. 通过BlobInput绑定读取.xlsx文件报损坏错误,如何正确处理?
优惠活动
大模型
产品
解决方案
定价
更多

通过BlobInput绑定读取.xlsx文件报损坏错误,如何正确处理?

正确读取Blob存储中.xlsx文件的方案

错误根源

你当前的实现从根上就有问题:.xlsx是二进制格式文件,不是文本文件。你用string作为BlobInput的绑定类型时,Azure Functions运行时会默认尝试用UTF-8编码把二进制Blob内容解析为字符串,这个过程会直接破坏不符合文本编码规则的原始字节,后续无论用任何编码把字符串转回字节数组,都无法还原原始的.xlsx文件结构,所以必然会报文件损坏错误,你使用Encoding.Unicode转码的操作更是加速了数据损坏。

正确实现

Azure Functions的BlobInput绑定原生支持直接绑定为Stream或byte[]类型,不需要你手动做编码转换:

方案1:直接绑定为Stream(推荐)

直接把绑定参数类型改成Stream,拿到的就是原始二进制流,可直接传入EPPlus、NPOI等xlsx处理库使用:

[BlobInput("templates/myTemplate.xlsx", Connection = "StorageAccountConnStr")] Stream templateStream

方案2:绑定为字节数组

如果需要主动操作字节内容,可直接绑定为byte[]类型:

[BlobInput("templates/myTemplate.xlsx", Connection = "StorageAccountConnStr")] byte[] templateBytes

需要构造MemoryStream时直接用拿到的字节数组即可,不需要做任何编码转换:

var templateStream = new MemoryStream(templateBytes);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 20:00:05