热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将多个文件导入到zip文件中-Pipemultiplefilesintoazipfile

IhaveseveralfilesinaGridFSDocumentStoreandwhatIdliketodoistopipethisdataintoa

I have several files in a GridFS Document Store and what I'd like to do is to pipe this data into a zip file via stdin in NodeJS. So that I will end up with a zip file containing all these files.

我在GridFS文档存储中有几个文件,我想做的是通过NodeJS中的stdin将这些数据传输到zip文件中。这样我就会得到一个包含所有这些文件的zip文件。

Now my question is how can I give the files a valid filename inside of the zip file. I think I need to emulate/fake a file header containing the filename?

现在我的问题是如何在zip文件中给这些文件一个有效的文件名。我想我需要模拟/伪造一个包含文件名的文件头?

Any help is appreciated!

任何帮助都是赞赏!

Thanks

谢谢

1 个解决方案

#1


4  

I had problems when writing zip files with Node.js not long ago. I ended up doing something similar to what is described in Zip archives in node.js

我在用Node编写zip文件时遇到了问题。js不久前。我最后做了一些类似于node.js中的Zip归档文件中描述的事情

I can't help you directly with your problem, but at least I hope I can point out some things:

我不能直接帮你解决你的问题,但至少我希望我能指出一些事情:

  • Don't try to use node-archive. Even if the description says it allows to create zip files, the moment I read the source code (since documentation is unexistant) I realized that's just a lie. It only exposes methods for reading.
  • 不要尝试使用节点存档。即使描述说它允许创建zip文件,当我读源代码的时候(因为文档是不存在的)我意识到那只是一个谎言。它只公开读取方法。
  • Using zip by spawning a process, like recommended on the provided link, seems to be the best way. Something that would work is copying the files to a local folder with whatever name you desire and then calling the zip command, just to delete the files afterwards.
  • 通过生成进程来使用zip(如提供的链接中推荐的)似乎是最好的方法。可以使用的方法是将文件复制到本地文件夹中,然后调用zip命令,然后删除文件。
  • The other option, which seems ok, is to use zipper (https://github.com/rubenv/zipper, although better just use npm). The reason I'm not really wishing to use it is because there's not that much flexibility, it seems to have been done in a day and it hasn't been modified since the first commit, so I'm not sure it will receive maintenance (sure, you could just fork it...).
  • 另一种选择似乎还可以,就是使用zipper (https://github.com/rubenv/zipper),不过最好还是使用npm。我之所以不希望使用它是因为它没有那么大的灵活性,它似乎是在一天内完成的,而且自从第一次提交之后它就没有被修改过,所以我不确定它是否会得到维护(当然,您可以用它来进行维护)。

I swear the day I have an entire free weekend with no work I will write a freaking module that does this as complete as possible. It's silly that there isn't and it shouldn't be that much struggle. blablablarant.

我发誓,我有一个完全免费的周末,没有工作,我会写一个该死的模块,这样做尽可能完整。没有这样做是愚蠢的,也不应该有那么多的挣扎。blablablarant。

Edit: Not sure if it was there before, but now I've been using the node-compress module (also using gzippo). It works fine.

编辑:不确定它以前是否存在,但是现在我使用了node-compress模块(也使用gzippo)。它将正常工作。


推荐阅读
  • Node.js中子进程的创建与管理详解
    本文深入探讨了Node.js中如何使用child_process模块来创建和管理子进程,包括exec、spawn和fork三种方法的具体应用及其实现细节。 ... [详细]
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • 利用 Jest 和 Supertest 实现接口测试的全面指南
    本文深入探讨了如何使用 Jest 和 Supertest 进行接口测试,通过实际案例详细解析了测试环境的搭建、测试用例的编写以及异步测试的处理方法。 ... [详细]
  • 本文深入探讨了 Prototype.js 框架及其与 JavaScript 原生 toString() 方法之间的区别,适合对前端开发感兴趣的开发者阅读。文章将帮助读者理解两者在功能实现和应用场景上的不同,从而更好地利用这些工具进行高效编程。 ... [详细]
  • MQTT协议:轻量级消息传输的基石
    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种基于发布/订阅模式的轻量级通信协议,适用于低带宽、高延迟或不可靠的网络环境。该协议基于TCP/IP构建,由IBM在1999年首次推出,旨在通过最小化网络流量和代码量,为远程设备提供高效、可靠的消息传输服务。 ... [详细]
  • 本文详细介绍了如何在Linux系统中安装和配置Node.js,包括从官方下载、编译安装到运行基本示例的全过程。 ... [详细]
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
  • 使用 NDB 提升 Node.js 应用调试体验
    本文介绍了由 Google Chrome 实验室推出的新一代 Node.js 调试工具 NDB,旨在为开发者提供更加高效和便捷的调试解决方案。 ... [详细]
  • 使用Gulp进行前端资源压缩
    本文探讨了如何利用Gulp这一强大的自动化构建工具,通过集成各种第三方插件来实现JavaScript、CSS和HTML等前端资源的高效压缩,以提升网站性能。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 本文深入探讨了Redis中的两种主要持久化方式——RDB(Redis Database)和AOF(Append Only File),并详细解析了两者的实现机制、优缺点以及在实际应用中的选择策略。 ... [详细]
  • 本文探讨了如何解决在使用CoffeeScript定义类时,实例化后对象为空的问题,并提供了解决方案。 ... [详细]
  • 腾讯视频 Node.js 服务国庆阅兵直播高并发实战
    本文分享了腾讯视频团队在国庆阅兵直播项目中,如何利用Node.js服务成功应对2.38亿次观看的高并发挑战。文章将从服务架构、可用性保障、缓存策略、日志与告警等方面详细解析。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有