これは難しいとは思いませんが、動作させることができませんでした。私はzipしたいファイルの場所、ディレクトリ、名前だけを格納するファイルクラスを持っています。私が圧縮しているファイルはディスク上に存在し、FileLocationは完全なパスです。 ZipFileDirectoryはディスク上に存在しません。私は私のファイルリスト内の2つの項目、DotNetZip:動的に作成されたアーカイブディレクトリにファイルを追加する
{ FileLocation = "path/file1.doc", ZipFileDirectory = @"\", FileName = "CustomName1.doc" },
{ FileLocation = "path/file2.doc", ZipFileDirectory = @"\NewDirectory", FileName = "CustomName2.doc" }
を持っている場合、私はルートにMyCustomName1.docを見ることを期待し、MyCustomName2.docを含むNewDirectoryという名前のフォルダが、何が起こるかは、彼らの両方がルートに終わるされます私はこれを使用する場合
using (var zip = new Ionic.Zip.ZipFile())
{
foreach (var file in files)
{
zip.AddFile(file.FileLocation, file.ZipFileDirectory).FileName = file.FileName;
}
zip.Save(HttpContext.Current.Response.OutputStream);
}
:
zip.AddFiles(files.Select(o => o.FileLocation), false, "NewDirectory");
を次に、それは、新しいディレクトリを作成し、予想通り、内部のすべてのファイルを置きますが、その後、私はCを使用する能力を失い、このコードを使用してこのメソッドを使ってネーミングを行い、最初のメソッドが完全に扱う複雑さも導入します。
私が期待するように最初のメソッド(AddFile())を動作させる方法はありますか?
私はDotNetZipのコードを探しています、そしてADDFILE()は、実際の作業では、あなたが期待するべきであるとことが表示されます。私は 'FileName'を" NewDirectory \ CustomName2.doc "に設定しなければならないという仮説を検討していましたが、これはコードではサポートされていません。ただし、これはバージョンに依存している可能性があります(おそらくバグ)。どのバージョンを使用していますか? – phoog