这是我使用的GZipStream,但支持部门要我使用Zip而不是GZip因为Windows不支持GZip,客户不知道如何打开它。
基本上我所拥有的是内存中的PDF字节并将其附加到电子邮件中。
所以,我不得不将其转换为Zip,但却无法这样做。我试过ZipArchive
但它需要磁盘。我尝试了Deflate
,但最后得到了0个字节。
那么,你们做了什么让它发挥作用?
[Original]
public static byte[] CompressFile(byte[] parmRawBytes)
{
using (var memoryStream = new MemoryStream())
{
using (var gzipStream = new GZipStream(memoryStream, CompressionMode.Compress))
{
gzipStream.Write(parmRawBytes.ToArray(), 0, parmRawBytes.ToArray().Length);
}
return memoryStream.ToArray();
}
}
[New]
public static byte[] CompressFile(byte[] parmRawBytes)
{
using (var sourceMemoryStream = new MemoryStream(parmRawBytes))
{
sourceMemoryStream.Position = 0; //Reset memory-stream pointer...
using (var targetMemoryStream = new MemoryStream())
{
//using (var zipArchive = new ZipArchive(memoryStream, ZipArchiveMode.Create, false))
//{
// var zipArchiveEntry = zipArchive.CreateEntry("foo.pdf");
//
// using (var stream = zipArchiveEntry.Open())
// {
// memoryStream.CopyTo(stream);
// }
//}
using (var deflateStream = new DeflateStream(sourceMemoryStream, CompressionMode.Compress))
{
targetMemoryStream.CopyTo(deflateStream);
}
return targetMemoryStream.ToArray();
}
}
}