我从字节数组在控制器中创建了一个 zip 文件,并将该 zip 文件作为文件结果返回。当我下载 zip 文件并解压该文件时,它已损坏。我这样做:
byte[] fileBytes =array
MemoryStream fileStream = new MemoryStream(fileBytes);
MemoryStream outputStream = new MemoryStream();
fileStream.Seek(0, SeekOrigin.Begin);
using (ZipFile zipFile = new ZipFile())
{
zipFile.AddEntry(returnFileName, fileStream);
zipFile.Save(outputStream);
}
outputStream.Position = 0;
FileStreamResult fileResult = new FileStreamResult(outputStream, System.Net.Mime.MediaTypeNames.Application.Zip);
fileResult.FileDownloadName = returnFileName + ".zip";
return fileResult;
您可能不幸遇到了其中一个未解决的错误点网压缩。有例如取决于文件大小的问题(https://dotnetzip.codeplex.com/workitem/14087).
很遗憾,点网压缩有一些关键问题,该项目似乎不再得到积极维护。更好的替代方案是使用 SharpZipLib(如果您遵守其基于 GPL 的许可证),或者其中之一zlib 的 .NET 端口.
如果您使用的是 .NET 4.5,您可以使用System.IO.Compression命名空间。以下示例可以在文档中找到ZipArchive class:
using System;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
using (var zipToOpen =
new FileStream(@"c:\tmp\release.zip", FileMode.Open))
{
using (var archive =
new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
var readmeEntry = archive.CreateEntry("Readme.txt");
using (var writer = new StreamWriter(readmeEntry.Open()))
{
writer.WriteLine("Information about this package.");
writer.WriteLine("========================");
}
}
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)