如何在C#中处理Selenium API返回的Base64压缩文件并导出为TXT
直接将Selenium API返回的Base64压缩字符串解压缩为本地TXT文件(C#实现)
需求说明
从Selenium Grid API获取文件的Base64压缩字符串后,无需生成中间ZIP文件,直接在代码内解压缩并导出为本地TXT文件。
完整实现代码
using System; using System.IO; using System.IO.Compression; // 触发下载并获取Base64压缩字符串 DownloadBtn.Click(); dynamic json = APIUtils.ExecuteAPIGet(SeleniumGridHubUri + "/session/MySessionID/se/files"); string fileToDownload = json.value.names[0]; object bodyOfAPI = new { name = fileToDownload }; dynamic json2 = APIUtils.ExecuteAPIPost(SeleniumGridHubUri, bodyOfAPI); string base64String = json2.value.contents; // 直接解压缩并保存为TXT文件 byte[] zipBytes = Convert.FromBase64String(base64String); string outputTxtPath = @"c:\seleniumdownloads\extracted_file.txt"; using (MemoryStream zipStream = new MemoryStream(zipBytes)) using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Read)) { // 获取压缩包内的第一个文件(若有多个文件,可根据文件名筛选) ZipArchiveEntry entry = archive.Entries[0]; // 读取压缩文件内容并写入本地TXT using (StreamReader reader = new StreamReader(entry.Open())) using (StreamWriter writer = new StreamWriter(outputTxtPath)) { writer.Write(reader.ReadToEnd()); } }
关键步骤说明
- Base64转字节数组:通过
Convert.FromBase64String将API返回的Base64字符串转换为字节数组。 - 内存中处理压缩包:用
MemoryStream包装字节数组,全程在内存中操作,避免生成本地ZIP临时文件。 - 读取压缩包内容:使用
ZipArchive解析内存中的压缩数据,获取目标文件条目。 - 导出TXT文件:通过
StreamReader读取压缩文件的文本内容,再用StreamWriter写入本地TXT文件。
注意事项
- .NET Core/.NET 5+默认包含
System.IO.Compression相关程序集;若使用.NET Framework,需手动添加System.IO.Compression和System.IO.Compression.FileSystem引用。 - 如果压缩包内存在多个文件,需要遍历
archive.Entries集合,通过entry.Name筛选出目标TXT文件。
内容的提问来源于stack exchange,提问作者Mike Johnston
相关产品推荐
相关产品推荐

