我正在尝试使用一些字节数组数据动态创建一个 zip 流,并通过我的 MVC 操作将其下载。
但下载的文件在 Windows 中打开时总是出现以下损坏错误。
当我尝试从 7z 提取时出现此错误
但请注意,从 7z 中提取的文件没有损坏。
我正在使用ZipArchive
,下面是我的代码。
private byte[] GetZippedPods(IEnumerable<POD> pods, long consignmentID)
{
using (var zipStream = new MemoryStream())
{
//Create an archive and store the stream in memory.
using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
{
int index = 1;
foreach (var pod in pods)
{
var zipEntry = zipArchive.CreateEntry($"POD{consignmentID}{index++}.png", CompressionLevel.NoCompression);
using (var originalFileStream = new MemoryStream(pod.ByteData))
{
using (var zipEntryStream = zipEntry.Open())
{
originalFileStream.CopyTo(zipEntryStream);
}
}
}
return zipStream.ToArray();
}
}
}
public ActionResult DownloadPOD(long consignmentID)
{
var pods = _consignmentService.GetPODs(consignmentID);
var fileBytes = GetZippedPods(pods, consignmentID);
return File(fileBytes, MediaTypeNames.Application.Octet, $"PODS{consignmentID}.zip");
}
我在这里做错了什么。
任何帮助将不胜感激,因为我整天都在为此苦苦挣扎。
提前致谢