将 DotNetZip ZipFile 转换为字节数组
Convert DotNetZip ZipFile to byte array
我已经构建了一个包含多个条目的 DotNetZip ZipFile。我想将它转换为字节数组,以便我可以使用下面的下载结构下载它。
Using wrkZip As New ZipFile
'----- create zip, add memory stream----------
For n As Integer = 0 To wrkAr.Count - 1
wrkFS = wrkAr(n)
wrkZip.AddEntry(wrkFS.FileName, wrkFS.ContentStream)
Next
dim wrkBytes() as Byte
dim wrkFileName as string = "Test.txt"
===> wrkBytes = ConvertToByteArray(wrkZip) <====
context.Response.Clear()
context.Response.ContentType = "application/force-download"
context.Response.AddHeader("content-disposition", "attachment; filename=" & wrkFileName)
context.Response.BinaryWrite(wrkBytes)
wrkBytesInStream = Nothing
context.Response.End()
我知道有一个用于此的 ZipFile 方法:
wrkZip.Save(context.Response.OutputStream)
但是,我在使用它时遇到了一个棘手的错误,如下所述:
DotNetZip download works in one site, not another
所以我正在寻找短期解决方法。关于这个错误的简短故事是 ZipFile 可以很好地写入磁盘,并且可以在非常相似的网站上很好地下载;它只是在我现在需要它的情况下不起作用。
那么,如何将 DotNetZip ZipFile 转换为字节数组?我看过其他答案,但是他们没有描述转换整个加载的 ZipFile 的这种特殊情况。
使用MemoryStream
将内容放入字节数组中:
Dim ms as New MemoryStream
wrkZip.Save(ms)
wrkBytes = ms.ToArray()
我已经构建了一个包含多个条目的 DotNetZip ZipFile。我想将它转换为字节数组,以便我可以使用下面的下载结构下载它。
Using wrkZip As New ZipFile
'----- create zip, add memory stream----------
For n As Integer = 0 To wrkAr.Count - 1
wrkFS = wrkAr(n)
wrkZip.AddEntry(wrkFS.FileName, wrkFS.ContentStream)
Next
dim wrkBytes() as Byte
dim wrkFileName as string = "Test.txt"
===> wrkBytes = ConvertToByteArray(wrkZip) <====
context.Response.Clear()
context.Response.ContentType = "application/force-download"
context.Response.AddHeader("content-disposition", "attachment; filename=" & wrkFileName)
context.Response.BinaryWrite(wrkBytes)
wrkBytesInStream = Nothing
context.Response.End()
我知道有一个用于此的 ZipFile 方法:
wrkZip.Save(context.Response.OutputStream)
但是,我在使用它时遇到了一个棘手的错误,如下所述:
DotNetZip download works in one site, not another
所以我正在寻找短期解决方法。关于这个错误的简短故事是 ZipFile 可以很好地写入磁盘,并且可以在非常相似的网站上很好地下载;它只是在我现在需要它的情况下不起作用。
那么,如何将 DotNetZip ZipFile 转换为字节数组?我看过其他答案,但是他们没有描述转换整个加载的 ZipFile 的这种特殊情况。
使用MemoryStream
将内容放入字节数组中:
Dim ms as New MemoryStream
wrkZip.Save(ms)
wrkBytes = ms.ToArray()