问题标签 [zipstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1956 浏览

c++ - 无法从一种迭代器类型转换为另一种,但两者完全相同

我正在尝试编译ZipStream库,它实际上是 zlib 的 C++ 包装器。

现在我正处于这两行出现两个编译错误的地步:

错误是:

错误 15 错误 C2440: 'initializing': 无法转换
'std::_Tree_const_iterator<_Mytree>'
'std::_Tree_const_iterator<_Mytree>' c:\users\ahakeem\desktop\zipstream\ziparchive.cpp 423 1 zipstream
错误 16 错误 C2440: 'initializing': 无法转换
'std::_Tree_const_iterator<_Mytree>'
'std::_Tree_const_iterator<_Mytree>' c:\users\ahakeem\desktop\zipstream\ziparchive。 cpp 424 1 压缩流

所以基本上编译器说它不能转换'std::_Tree_const_iterator<_Mytree>''std::_Tree_const_iterator<_Mytree>'

任何想法为什么会发生以及如何解决?

编辑:经过进一步调查,我发现它_core->entries_by_name.begin()被声明为'std::set<file_info_32*, sort_by_offset>',这显然与其迭代器试图分配给 ( std::set<file_info_32*, sort_by_offset>) 的内容不一致。

将其切换为_core->_entries_by_offset.begin();有效,因为_entries_by_offset该类型与受让人期望获得的类型一致。

这是否意味着有人可能已经破坏了代码,没有意识到并将其上传到源代码库?或者这种错误分配的场景实际上可以在某些系统上编译吗?

0 投票
0 回答
1439 浏览

php - 如何在 PHP 中创建适合 OS X 存档实用程序的流式 zip 存档?

我正在尝试为一个相对较小的 Web 应用程序集成一个按需备份系统,该系统允许用户下载服务器上所有文件的 zip 文件和数据库转储。zip 文件流式传输给用户,而不是作为一个整体打包在服务器上的临时目录中。

我正在使用名为 ZipStream 的第三方 PHP 类来完成此操作。课程托管在这里,具体的课程文件可以在这里查看。我选择了这个版本(还有另一个旧版本),因为它支持包含目录。shell_exec()此外,该设置应该可以在服务器上运行,而无需通过或访问 shell 命令passthru()

我的简单测试设置正在运行,我可以使用unzip控制台中的命令或使用The Unarchiver.app. OS X 的存档实用程序(Mac OS X 10.6 以及很可能较旧和更高版本)会导致问题,但是因为它无法提取存档并出现以下错误:

记录的实际错误是:

在 StackOverflow的此处和此处找到了有关此问题的一些可能解释,我想修补 ZipStream 类以遵守 Zip 规范,以便存档实用程序将按预期扩展存档。

ZipStream 类中的“需要提取的版本”(存储在ATTR_VERSION_TO_EXTRACT常量中)是:x0Ax00,但我不确定该表示法是否与0x000A上述问题中提到的标准不同。

该问题似乎与添加到 zip 文件的目录有关。仅包含文本文件的 zip 文件不会导致使用存档实用程序出现问题。

由于这与 PHP 领域的边缘一起移动,我不确定如何使用正确的十六进制字符串编辑脚本或如何将 Zend 解决方案适用于这个特定的脚本。

我在这里上传了一个生成的 zip:http: //dl.dropbox.com/u/6887873/test.zip

要生成的代码是示例代码的精简版本:

编辑:

我想我已经把问题缩小了一点。看起来十六进制字符串实际上并没有什么不同。使用存档实用程序展开生成的仅包含文本文件的 zip 而不会出错,因此在添加目录时似乎会发生损坏,特别addDirectoryContent()是在调用addLargeFile()ZipStream 类时。目录添加正确,不会导致文件无效,只要addDirectoryContent()添加到混合存档实用程序无法提取文件,输出上述错误。

0 投票
3 回答
8856 浏览

javascript - 从文件夹创建 zip 存档并使用 Node.js 保留结构

我正在尝试使用 Node.js 从现有文件夹创建一个 zip 文件,并保留结构。

我希望有一个简单的模块来允许这种事情:

但我找不到任何类似的东西!

我一直在谷歌搜索,到目前为止我发现的最好的是 zipstream,但据我所知,没有办法做我想做的事。我真的不想调用命令行实用程序,因为该应用程序必须是跨平台的。

任何帮助将不胜感激。

谢谢。

0 投票
0 回答
820 浏览

zipstream - convert ZipOutputStream into ZipInputStream using PipedStream in java

i want to convert a ZipOutputStream into ZipInputStream using PipedOutputStream and PipedInputStream. I am receiving ZipOutputStream from DataHandler, and i don't want to write it on file and then open and read it, rather i want to convert this ZipOutputStream into ZipInputStream for my further processing, like extracting ZipEntry and save it in some file.

Any help will be appreciated... thanks

0 投票
0 回答
746 浏览

node.js - 在 Node.js 中,由 fs.createFileStream 生成的 Stream 在另一个流被读取到末尾后是不可读的

我正在使用node-zipstream在 node.js 中创建 ZIP 文件。在将流添加到 ZIP 时,我创建了一个简单的包装器来创建同步 API 的错觉(包含在下面的代码中)。

使用请求流时,一切都按预期工作,但是当我使用文件流时,第二个流在第一个流完成后变得不可读。

控制台输出:

0 投票
0 回答
480 浏览

php - Zipstream - PHP 在输出标题之前获取查询字符串

我正在使用它来创建即时压缩和从亚马逊存储桶交付文件:

例如,这可以传递给文件:index.php?q=movie1.m4v|movie2.m4v

我用过这个:http ://pablotron.org/software/zipstream-php/效果很好。

但是下面的代码不起作用:

但这不起作用。它给了我一个空的 zip 文件。

当我手动执行此操作时,它可以正常工作:

我相信标题是在读取查询字符串之前发送的,这会弄乱我的 php 文件中的以下代码,对吗?我该如何解决这个问题?

谢谢

现在解决的应该是 $files[$i] 和 . 用于串联。不是 $files[i] 和 + 。Javascript 编码习惯让我很困惑

工作版本:

0 投票
1 回答
7427 浏览

php - how to zip stream csv file php

I created an .csv export file with code:

It work ok but I want to compress the csv file to zip file and download it. How do it

0 投票
1 回答
1036 浏览

grails - 在完成 zip 创建之前将 zip 内容发送到响应

我已经成功地在我的“本地构建”上创建了一个临时文件夹并在其中添加图像文件以供用户压缩和下载。不幸的是,在部署到我的测试服务器后,我无法创建这样的临时文件夹,因此我相信由于权限错误而无法压缩和流式传输它。基本上我是通过了。我无法访问在我的测试服务器上创建文件夹,并且需要将此文件夹和文件存储在我的 S3 存储桶上,然后从这里创建一个 zipOutputStream - 或者 - 如果可能的话,我认为这可能是一个更好的解决方案,是在我完成 zip 创建之前“即时”发送 zip 内容以响应。这可能吗?如果是这样,将如何去做呢?与将文件临时存储在 S3 上以进行压缩和流式传输相比,此方法是否有好处。

用于文件夹创建和压缩和流式传输的当前代码

0 投票
0 回答
1004 浏览

node.js - 使用 NodeJs zip-stream 或存档模块将文件添加到现有的压缩存档中

我有这种情况:

我有一个 zip 文件供用户下载,但对于每次下载,我想包含一个包含用户特定内容的“自述文件”(例如用户名和下载时间)。我使用归档器(zip-stream)模块将压缩后的内容压缩并流式传输到浏览器。目标是最小化 CPU 使用(即压缩)和存储(即创建相同 zip 的副本)。以下是一些可能的方法来实现这一点。

  1. 每次下载时,制作原始 zip 的副本,然后将动态生成的自述文件添加到副本中,然后再流式传输到浏览器。如果许多用户同时下载,这将创建原始 zip 文件的许多重复副本。这是不可接受的,因为 zip 文件可能有 2Gb 大。

  2. 每次下载后,为流媒体创建一个新的 zip,其中包括原始 zip 文件和自述文件。这可以节省 CPU 和存储空间,因为新的 zip 是动态创建的。但这意味着用户必须在下载后解压缩两次,这是不可接受的。

我想知道我是否可以存储一个“未完成”的 zip 文件并将自述文件附加到其中,然后再完成它并将其流式传输到浏览器。

0 投票
1 回答
1249 浏览

node.js - nodejs将数据附加到读取流的末尾

我想读取一个 .txt 文件,将数据附加到末尾,最后将其发送到 zipstream。现在我正在做的是编写一个新文件,然后将新文件用于 zipstream,但我想即时进行,而不创建不必要的新文件。

我的问题是如何创建一个读取流,修改它并发送到另一个读取流(可能中间有一个写入流)。

这可能吗?

最初的想法是这个,但我在中间的某个地方迷路了: