2012-03-24 15 views
5

Ionic zipを使用すると、既存のファイルをzipオブジェクトに追加してzipファイルを作成できます。しかし、私が作成したZIPファイルからこれらのバイト[]を読んでサーバー上で送信していることを考慮して、サーバー上にzipを格納するためにそのバイト[]からzipファイルを作成する必要があります。これをどのように達成するのですか?Ionic Zip:バイト[]からのZipファイルの作成

私はC#を使用しています。

答えて

16

、あなたはネットワーク経由でbyte[]データ配列を取得し、zipファイルにそのデータを保存したいですか?

byte[] data = MethodThatReceivesYourDataOverTheNet(); 
using (MemoryStream stream = new MemoryStream(data)) 
{ 
    using (ZipFile zip = new ZipFile()) 
    { 
     zip.AddEntry("name_of_the_file_in_the_arhive.bin", "base", stream); 
     zip.Save("example.zip"); 
    } 
} 
+0

ありがとう:あなたはbyte[]あなたが(docsに示すように)なったから作成MemoryStreamから新しいZipEntryを作成することができます。それはまさに私が探していたものです。 – Cannon

+0

AddEntryはこのコンストラクタを提供しません。ストリームを渡すことができる唯一のものはAddEntry([fileName]、[Stream])です。 – JRodd

9

それは何をやっているあなたの質問から、本当にはっきりしていない - しかし、あなただけのディスクへの保存を回避しようとしてデータを取得するためにリロード、ちょうどMemoryStreamに保存している場合:

byte[] data; 
using (MemoryStream ms = new MemoryStream()) 
{ 
    zipFile.Save(ms); 
    data = ms.ToArray(); 
} 
// Do whatever with data. 

また、別のコピーを作成することを避けるためにMemoryStream.GetBuffer()を使用します。私が正しくあなたの質問を理解していれば

byte[] buffer; 
int length; 
using (MemoryStream ms = new MemoryStream()) 
{ 
    zipFile.Save(ms); 
    buffer = ms.ToArray(); 
    length = ms.Length; 
} 

// Now use buffer, but only up to "length"... 
関連する問題