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

求助:Azure独立进程函数处理Blob中Zip文件失败问题

解决.NET7独立进程Azure函数处理Zip Blob的问题

你遇到的核心问题是把二进制Zip文件当成字符串处理,编码转换破坏了原始字节数据。Zip是二进制格式,并非文本内容,用ASCII、UTF8等编码将其转成字符串再转回字节时,会丢失或篡改原始二进制信息,自然无法生成有效的ZipArchive。

解决方案

在独立进程模式下,Azure Functions的BlobTrigger支持直接接收byte[]类型的Blob内容,不需要转成字符串。修改函数参数类型即可解决问题:

public void Run([BlobTrigger("test-zip/{name}", Connection = "StorageConnectionString")] byte[] myBlob, string name)
{
    using var ms = new MemoryStream(myBlob);
    using var zip = new ZipArchive(ms); 
    // 此处可正常操作ZipArchive的条目
}

原理说明

  • 本地读取文件时,File.OpenRead获取的是原始二进制流,没有经过编码转换,因此能正常解析Zip。
  • 用string接收Blob时,Azure Functions会默认用编码(如UTF-8)将二进制数据转成字符串,这个过程对非文本数据(Zip、图片等)具有破坏性且不可逆。改用byte[]则直接获取原始二进制字节,完美保留Zip文件结构,转成MemoryStream后就能正常解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:32:15