DotNetZip:将文件添加到动态创建的存档目录

2024-01-19

我无法想象这很难做到,但我还没能让它发挥作用。我有一个文件类,它只存储我想要压缩的文件的位置、目录和名称。我要压缩的文件存在于磁盘上,因此 FileLocation 是完整路径。磁盘上不存在 ZipFileDirectory。如果我的文件列表中有两项,

{ FileLocation = "path/file1.doc", ZipFileDirectory = @"\", FileName = "CustomName1.doc" },

{ FileLocation = "path/file2.doc", ZipFileDirectory = @"\NewDirectory", FileName = "CustomName2.doc" }

我希望在根目录中看到 MyCustomName1.doc,以及一个名为 NewDirectory 的文件夹,其中包含 MyCustomName2.doc,但发生的情况是它们最终都使用以下代码位于根目录中:

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");

然后它创建新目录并将所有文件放入其中,如预期的那样,但随后我失去了通过此方法使用自定义命名的能力,并且它还引入了第一种方法可以完美处理的更多复杂性。

有没有办法让第一个方法(AddFile())按我的预期工作?


经过进一步检查,自从几分钟前发表评论以来,我怀疑设置FileName正在擦除存档路径。

测试证实了这一点。

将名称设置为@“NewDirectory\CustomName2.doc”将解决该问题。

您还可以使用 @"\NewDirectory\CustomName2.doc"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DotNetZip:将文件添加到动态创建的存档目录 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • IE9是否支持console.log,它是一个真正的功能吗?

    在什么情况下是window console log在 Internet Explorer 9 中定义 即使当window console log被定义为 window console log apply and window console
  • 在 Angular JS (1.x) 中验证分页表单

    我有一个使用带输入字段的表格的角度形式 用户可以添加和删除行 每个单元格的输入类型可以是文本 数字 日期等 如果表格太大 表格就会变慢 解决此问题的一种方法是对表进行分页 不幸的是 对表格进行分页是一个问题 因为我对输入字段进行了自定义验证
  • lfe 包裹去了哪里?我怎样才能找到类似的信息?

    我正在寻找这个的更新版本 https cran r project org web packages lfe index html https cran r project org web packages lfe index html包裹
  • 链接器命令失败,sdl

    我正在尝试编译我的第一个 SDL 程序 但它无法编译 顺便说一句 我猜这不应该是关于设置库 因为我认为我正确安装了库 这是我的命令 g main cpp o main I Library Frameworks SDL2 framework
  • 如何使用 gganimate 动画让 x 轴跨度移动?

    使用 R 我尝试使用 gganimate 制作一个基于 x 轴从左到右显示的折线图 我已经设法做到了这一点 但我还想做的是使scale x continuous limits c i 5 i 5 即在正在显示的点和窗口周围有一个窗口将继续前
  • 成员访问不完整类型“QScrollBar”[重复]

    这个问题在这里已经有答案了 QScrollArea scrollArea new QScrollArea this scrollArea gt verticalScrollBar gt width 我试图获取 QScrollArea 的 V
  • 如何在 OncreateView 中运行异步功能?

    我的应用程序有问题 首先 我使用以下命令制作了两个选项卡碎片这会膨胀一个activity 实现的选项卡工作正常 其次我已经展示了XAML right 但是 我现在需要异步运行一些东西 Fragment 中的 OnCreateView 我怎样
  • 万物皆对象是如何运作的?

    我了解背后的主要理论一切都是对象但我真的不明白它是如何在幕后实现的 功能 So foo 4 是相同的foo call 4 但是什么阻止了我做foo call call 4 foo是一个函数并且foo call 都是围绕函数的方法包装器 但是
  • 复制带有下一个和随机指针的链表,仅赋予链表读取权限

    我需要复制带有下一个和随机指针的链表 下 一个指针照常指向链表中的下一个元素 随机指针可能指向任何其他节点 甚至指向其自身 如果我不允许在任何时候修改给定的列表 而只给出列表的读取权限 该怎么办 优雅的解决方案 线性时间 恒定空间 创建节点
  • Microsoft Exchange 不会将 PHPmailer 生成的电子邮件呈现为 HTML

    这个问题已经困扰我好几个星期了 我有一个脚本 可以在 PHPmailer 的帮助下将带有 xls 附件的 html 电子邮件发送给多个收件人 它已经运行良好一年多了 最近 来自同一家公司的两个使用 Microsoft Exchange 作为
  • 如何设置svn仓库的权限?

    我在网络驱动器上创建了一个存储库svnadmin create repos 有没有办法设置用户对存储库的权限 如果是这种情况 如何设置这些权限 如果您需要通过以下方式管理访问svn 协议 嵌入授权 您所需要做的就是更改文件conf新创建的存
  • 是否可以将标准的纯 C 标头 #include 指令放入命名空间中? [复制]

    这个问题在这里已经有答案了 可能的重复 将 include 包装在命名空间块中是个好主意吗 https stackoverflow com questions 6670738 is it a good idea to wrap an inc
  • 如何使用 roxygen 包从 dplyr 导入管道运算符 %>%

    我想用我编写的一些函数构建一个包 现在我的问题是 我无法将管道运算符 gt 与 dplyr 一起使用 我用 roxygen2 创建包 如果我编写没有 gt 的 dplyr 命令 则一切正常 代码里面 import dplyr readr m
  • 如何传递函数参数的值并运行独立的 Google Apps 脚本?

    从文档来看 https developers google com apps script guides standalone https developers google com apps script guides standalon
  • 如何在 vim 中进行语法检查?

    这个问题已经以这样或那样的形式被问过十几次了 这让我大吃一惊 为什么没有一个人真正解决如何配置合成的 http www vim org scripts script php script id 2736 or jslint http www
  • jsf 表达式语言中的 null 检查

    请参阅此表达语言 styleClass obj validationErrorMap eq null obj validationErrorMap contains key highlight field highlight row 即使地
  • 如何使用 Cognito Id(+配置)调用 AWS API Gateway 端点?

    我想打电话给AWS API Gateway Endpoint受保护的是AWS IAM使用generated JavaScript API SDK 我有一个Cognito UserPool and a Cognito Identity Poo
  • CSS 问题 - 边距顶部 - Google Chrome [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions On my
  • Android 应用程序在向下滚动 ListView 后崩溃

    我有一个 listView 当我没有太多项目时 一切都工作正常 当我向下滚动时项目列表很长时 它会在某个点崩溃 这是我的适配器代码 public class SearchListViewAdapter extends BaseAdapter
  • DotNetZip:将文件添加到动态创建的存档目录

    我无法想象这很难做到 但我还没能让它发挥作用 我有一个文件类 它只存储我想要压缩的文件的位置 目录和名称 我要压缩的文件存在于磁盘上 因此 FileLocation 是完整路径 磁盘上不存在 ZipFileDirectory 如果我的文件列