我用DotNetZip。
我搞错了
不可能在不可查找的输入流上使用PKZIP加密。
做什么?
var outputStream = new MemoryStream();
using (var zip = new ZipFile())
{
zip.Password = "123456!";
var outputStreamFile = new MemoryStream();
var userId = m_userRepository.GetuserByLogin(this.User.Identity.Name).UserId;
using (var streamWriter = new StreamWriter(outputStreamFile))
{
streamWriter.WriteLine(m_kamikaze2Repository.GetGameById(gameId, userId).Result);
}
zip.AddEntry("result_" + gameId, outputStreamFile);
zip.Save(outputStream);//error
}发布于 2012-05-15 09:55:15
问题是,当您将outpuStreamFile添加到ZipFile时,它是关闭的。StreamWriter.Dispose将释放流,所以只需移动using语句,以确保在调用zip.Save时outputStreamFile是可用的。
另外,在将outputStreamFile添加到ZipFile之前,您需要将其倒带。
using (var outputStreamFile = new MemoryStream()) {
var userId = m_userRepository.GetuserByLogin(this.User.Identity.Name).UserId;
var streamWriter = new StreamWriter(outputStreamFile);
streamWriter.WriteLine(m_kamikaze2Repository.GetGameById(gameId, userId).Result);
outputStreamFile.Seek(0, SeekOrigin.Begin);
zip.AddEntry("result_" + gameId, outputStreamFile);
zip.Save(outputStream);
}发布于 2012-05-15 10:18:40
就像这样:
using (var outputStream = new MemoryStream())
using (var zip = new ZipFile())
{
zip.Password = "123456!";
zip.AddEntry("result_" + gameId, "Some content");
zip.Save(outputStream);
byte[] zipFile = outputStream.ToArray();
// TODO: do something with the zip
}https://stackoverflow.com/questions/10598056
复制相似问题