Ionic zipを使用すると、既存のファイルをzipオブジェクトに追加してzipファイルを作成できます。しかし、私が作成したZIPファイルからこれらのバイト[]を読んでサーバー上で送信していることを考慮して、サーバー上にzipを格納するためにそのバイト[]からzipファイルを作成する必要があります。これをどのように達成するのですか?Ionic Zip:バイト[]からのZipファイルの作成
私はC#を使用しています。
Ionic zipを使用すると、既存のファイルをzipオブジェクトに追加してzipファイルを作成できます。しかし、私が作成したZIPファイルからこれらのバイト[]を読んでサーバー上で送信していることを考慮して、サーバー上にzipを格納するためにそのバイト[]からzipファイルを作成する必要があります。これをどのように達成するのですか?Ionic Zip:バイト[]からのZipファイルの作成
私はC#を使用しています。
、あなたはネットワーク経由で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");
}
}
それは何をやっているあなたの質問から、本当にはっきりしていない - しかし、あなただけのディスクへの保存を回避しようとしてデータを取得するためにリロード、ちょうど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"...
ありがとう:あなたは
byte[]
あなたが(docsに示すように)なったから作成MemoryStream
から新しいZipEntry
を作成することができます。それはまさに私が探していたものです。 – CannonAddEntryはこのコンストラクタを提供しません。ストリームを渡すことができる唯一のものはAddEntry([fileName]、[Stream])です。 – JRodd