问题标签 [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 回答
1722 浏览

php - Laravel Zipstream 从流中添加文件

我正在尝试让ZipStream在 Laravel 5.4 中工作。我想从 s3 流式传输文件以创建返回给浏览器的 ZipStream。

目前,我的代码会生成与有效 ZIP 文件大小相同的损坏 ZIP 文件。

这是我的操作方法:

如果我使用下面的代码将每个文件读入内存,则 ZIP 文件可以正常工作。然而,这是不可取的,因为我将处理可能有几 GB 大的文件。

谁能帮我弄清楚 ZIP 文件出了什么问题?

谢谢!

0 投票
0 回答
1092 浏览

delphi - Delphi ZipMaster:如何从流中创建 zip 文件并将其保存为流

专家们,

我有以下问题。我试图找到一种将 zip 文件创建为流的解决方案,但 zip 文件不应物理存储,而应仅作为流存在。

我已尝试使用以下代码示例,但它不起作用。如果我这样做,则会出现一条错误消息:

存档已损坏或不包含文件。

我使用的 zip 库是 ZipMaster - DelphiZip ( http://www.delphizip.org/ )。

0 投票
0 回答
178 浏览

c# - 如何创建下载文件并刷新页面

我创建了一个下载按钮,它将压缩我文件夹中的文件,然后将压缩文件返回给用户。返回 zip 文件后,我无法刷新页面。

这是我的代码:

后面的代码

我怎样才能做一些事情,比如将 zip 返回给用户,我也刷新我的页面以显示我在数据库中更新的上传日志?

0 投票
0 回答
180 浏览

node.js - 在 Google k8s 上使用 zip-stream NPM 的意外行为

我正在努力在服务器上创建多个文件的 zip,并在创建时将其流式传输到客户端。最初,我使用的是ArchiverJs,如果我将缓冲区附加到它,它工作正常,但是当我需要向其中添加流时它会失败。然后在Github上进行了一些讨论后,我切换到Node zip-stream,感谢jntesteves开始正常工作。但是当我在GKE k8s 上部署代码时,我开始收到大文件的Network Failed错误。

这是我的示例代码:

我在本地测试了 7-8 个约 4.5 GB 的文件,它工作正常,当我在 google k8s 上尝试相同时,出现网络失败错误。经过更多研究,我在 k8s t0 3000 秒上增加了服务器超时,而不是它开始正常工作,但我猜增加超时并不好。我在代码级别上是否缺少任何东西,或者您能否为可以下载具有许多并发用户的大文件的服务器建议一些好的GKE部署配置?在过去的 1.5 个多月里,我一直坚持这一点。请帮忙!

编辑1:我在入口编辑了超时,即网络服务->负载平衡->编辑服务中的超时 后端服务详情_1

0 投票
0 回答
52 浏览

java - zip 文件损坏或开头有 NUL 字节更正它并在 Java 中重新创建 zip

我们通过 http post url 接收一个 zip 文件,有时这个 zip 文件已损坏,或者从源压缩时包含 NUL 字节,而它正在将文件添加到 zip 时需要更多时间来创建要压缩的文件。现在我们遵循了下面链接中指定的方法,而不是解压缩到目录中,我们需要将更正的 zip 条目重新压缩回 zip 文件,并将 zip 最初放在一个文件夹中,如输入文件夹,并在验证/处理 zip 之后我们需要将更正后的 zip 移动到另一个文件夹,如存档。请帮助解决这个问题。

实际上在跳过 NUL 字节后寻找如何从 zip 输入流或从扫描仪创建 zip。

Java中的解压错误

谢谢。

0 投票
2 回答
285 浏览

node.js - Understanding streams in Node js

I am stuck on an issue where I need to create and download a zip of multiple files using NodeJs. Things I have tried and failed :

https://github.com/archiverjs/node-archiver/issues/364#issuecomment-573508251

https://github.com/kubernetes/kubernetes/issues/90483#issue-606722433

unexpected behavior using zip-stream NPM on Google k8s

In addition to this, now the files are encrypted as well so I have to decrypt them before adding them to zip on the fly.

Though I solved this also, my solution works perfectly while the server is running on a local machine but failed when on the Google Kubernetes Engine.

After some more research, I guess this might be because of a backpressure issue in the streams in NodeJs but as described in docs, backpressure is handled by the pipe method automatically. Is it possible that the receiving speed of the browser is not matching with the sending speed of my server/zipping if yes how to solve this problem?

All the samples related to the problem are in the links provided above.

In Addition to this readable stream is passed through decipher to decrypt it.

I tried this code with archiver, getting drain event of archiver while zipping large files, does pipe handles back pressure or not if yes why I am getting drain event from archiver.

0 投票
0 回答
100 浏览

laravel - 如何将 ZipStream 与 Larvel 8.x 控制器一起使用,然后重定向

我在 Laravel 控制器中使用 ZipStream ( https://github.com/maennchen/ZipStream-PHP ) 来下载用户选择的文件集合。完成后,我需要发送成功消息,并重定向回原始页面。我现在得到的是一个成功的下载,但它只是挂在那里,永远不会点击消息和重定向代码。这是我所拥有的:

(以上基于此处找到的代码:创建和下载 Zip 文件 (maennchen/ZipStream-PHP)

我试过返回$response,它做同样的事情。

似乎StreamedResponse应该在完成处理时通知您,但是如果您测试$response->isSuccessful()or $response->isOk(),您会立即得到真实的。

0 投票
0 回答
144 浏览

php - 关于 zip 流如何处理 php 中的大文件的问题

有 zip 流经验的人可以向我解释他们打算如何工作吗?

例如,我有一个可以编辑照片元数据的应用程序(添加自定义关键字,更改标题或描述等)但是当我想从 S3 下载它们时,我必须先在服务器上临时下载才能更新(更改) 他们的元数据(使用 exiv2)。

为了下载,我尝试了这个https://github.com/maennchen/ZipStream-PHP,后来也尝试了这个https://github.com/stechstudio/laravel-zipstream但是下载“挂起”,直到所有照片都被处理(直到循环完成)并且只有在最后它才显示保存对话框。然后当你保存它时,它已经下载了,因为它是在那个“挂起”期间下载的。问题是当用户单击下载按钮时它看起来像“延迟”。当处理少量数据时,可以容忍,但是当我想下载,例如,几 GB 时,它仍然会下载它,但它是在后台进行的。当我打开网络选项卡时,我看到请求处于待处理状态并且大小列正在增长(因为它正在下载文件),然后几分钟后(这取决于您的下载速度)它会显示一个保存对话框。

现在,来自https://github.com/stechstudio/laravel-zipstream的这句话真的让我很困惑:

为您的用户提供直接下载流。即使 zip 仍在创建中,zip 下载也会立即开始。无需先将 zip 保存到磁盘。

所以我想问一下是否可以立即开始下载(在处理第一个文件之后)或者这种行为,正如我所描述的,是 zip 流的预期行为吗?

如果可能的话,是不是因为我只在后端工作,所以前端搞砸了?

还是我做错了什么?我可以改变或做一些不同的事情,有没有更好的方法来处理应用程序中的这个流程?

谢谢

0 投票
1 回答
33 浏览

python-3.x - 在 Django 中使用 Python3 ZipStream 获取损坏的 zip

我从这里使用 zipstream并有一个 Django 视图,它返回所有文件附件的 zip 文件,这些文件附件都托管在 Amazon S3 上。但是当我下载 zip 文件时,它们都被损坏了,也就是说,我无法打开它们。

0 投票
1 回答
47 浏览

powershell - PowerShell用字节数组读写压缩文件

最后更新:原来我不需要二进制作家。我可以将内存流从一个存档复制到另一个存档。

我正在重新编写一个适用于档案的 PowerShell 脚本。我在这里使用了两个功能

无需导入和导出文件即可展开存档

并且可以成功地读写文件到存档。我已经发布了整个程序,以防万一有人帮助我更清楚。

但是,存在三个问题(除了我真的不知道自己在做什么的事实之外)。

1.) 大多数文件在尝试运行时都会出现此错误 Add-ZipEntry -ZipFilePath ($OriginalArchivePath + $PartFileDirectoryName) -EntryPath $entry.FullName -Content $fileBytes}

无法将值“507”转换为类型“System.Byte”。错误:“对于无符号字节,值太大或太小。” (用字节数组中的任何数字替换 507)

2.) 当它读取一个文件并将其添加到 zip 存档 (*.imscc) 时,它会在文件内容的开头添加一个字符“a”。

3.)唯一不会出错的文件是文本文件,当我真的希望它处理任何文件时

感谢您的任何帮助!

更新:我尝试使用 System.IO.BinaryWriter,但错误相同。