我無法想象這很難做到,但我一直無法讓它工作。我有一個文件類,它只存儲我想壓縮的文件的位置,目錄和名稱。我壓縮的文件存在於磁盤上,因此FileLocation是完整路徑。 ZipFileDirectory在磁盤上不存在。如果我在我的文件列表兩個項目,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的能力ustom用這種方法命名,而且它還引入了第一種方法可以完美處理的更復雜的問題。
有沒有辦法讓我的第一個方法(AddFile())能像我期望的那樣工作?
我期待通過DotNetZip代碼,並且看起來AddFile()應該工作其實像您期望。我正在考慮假設您應將'FileName'設置爲「NewDirectory \ CustomName2.doc」,但代碼不支持該假設。但是,這可能與版本有關(也許是一個錯誤)。你使用什麼版本? – phoog 2012-01-06 22:04:29