2015-06-19 2 views
3

Я создал DotNetZip ZipFile с несколькими записями. Я хотел бы преобразовать его в массив байтов, чтобы загрузить его с помощью конструкции загрузки ниже.Преобразование 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.

ответ

6

Используйте MemoryStream, чтобы получить содержимое в массив байтов:

Dim ms as New MemoryStream 
wrkZip.Save(ms) 
wrkBytes = ms.ToArray() 
+0

Это работало. Не решила проблема с загрузкой, но ответила на вопрос и устранила ZipFile.Save (в контексте страницы) в качестве проблемы с загрузкой. Благодаря! – wayfarer

Смежные вопросы