我无法想象这很难做到,但我无法让它发挥作用.我有一个文件类,只存储我想要压缩的文件的位置,目录和名称.我正在压缩的文件存在于磁盘上,因此FileLocation是完整路径.ZipFileDirectory在磁盘上不存在.如果我的文件列表中有两个项目,
{ FileLocation = "path/file1.doc", ZipFileDirectory = @"\", FileName = "CustomName1.doc" },
{ FileLocation = "path/file2.doc", ZipFileDirectory = @"\NewDirectory", FileName = "CustomName2.doc" }
Run Code Online (Sandbox Code Playgroud)
我希望在根目录中看到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);
}
Run Code Online (Sandbox Code Playgroud)
如果我用这个:
zip.AddFiles(files.Select(o => o.FileLocation), false, "NewDirectory");
Run Code Online (Sandbox Code Playgroud)
然后它创建新目录并按预期将所有文件放入其中,但随后我无法使用此方法使用自定义命名,并且它还引入了第一种方法可以完美处理的更复杂的问题.
有没有办法让第一种方法(AddFile())按预期工作?
在进一步检查时,自几分钟前发表评论以来,我怀疑该设置FileName正在删除存档路径.
测试证实了这一点.
将名称设置为@"NewDirectory\CustomName2.doc"将解决问题.
你也可以使用@"\ NewDirectory\CustomName2.doc"
| 归档时间: |
|
| 查看次数: |
4812 次 |
| 最近记录: |