Node.js readFileSync ZIP 文件

2023-12-05

我正在尝试读取 ZIP 文件并将其输出到浏览器,获取页面上显示的代码并将其另存为 ZIP 文件

fs.readFileSync('/dir/file.zip','utf-8')

当我这样做时,我得到的输出以PK�coG���^�*filename.txt并持续一段时间。然而,当我将生成的文本保存为 file.zip 时,我无法提取该文件。它说它已损坏或不是有效的 ZIP 文件。

如果我在 Notepad++ 中打开一个非常相似的文件,则开头和结尾非常相似。我错过了一些明显的东西吗?

任何想法如何获取 ZIP 文件的内容,保存它以便我可以提取它,仅使用fs.readFileSync功能?


ZIP 是一种二进制文件类型,当您在浏览器中将其作为文本输出并将文本复制粘贴到文本编辑器时,您将不会获得与原始文件中相同的值(网络浏览器可能会解释其某些内容)内容作为 HTML 标签,和/或复制粘贴会破坏一些二进制字符,和/或文本编辑器本身会破坏它们)。

您应该做的是在向浏览器提供文件时设置适当的 HTTP 响应标头,以便浏览器knows它是一个 ZIP,可以向用户显示文件下载提示。如果您不发送任何响应标头,浏览器将仅将内容显示为文本文件,这是没有意义的。

看看这个有 PHP 解决方案的问题:

https://stackoverflow.com/a/10817739/245966

基本上你需要设置适当的Content-Type and Content-Disposition标头,以及(可选)Content-Length.

setResponseHeader('Content-Disposition: attachment; filename=myfile.zip');
setResponseHeader('Content-Type: application/zip');
setResponseHeader('Content-Length: ' + fileLengthInBytes);

Replace setResponseHeader适当调用您的 HTTP 框架来设置响应标头。

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

Node.js readFileSync ZIP 文件 的相关文章

随机推荐

  • Xcode 中的 Objective-C 类似 JavaDoc 文档? [复制]

    这个问题在这里已经有答案了 可能的重复 Objective C 中的文档如何做 是否可以在 Objective C 中以 Xcode 4 在快速帮助中显示它们的方式编写类 方法文档 和 或以 Apple 自己的文档风格从中生成文档文档 现场
  • 如何在 Swift 中创建类数组

    我创建了两个类 StepsCell 和 WeightCell import UIKit class StepsCell let name Steps let count 2000 import UIKit class WeightCell
  • 内联 WSDL 而不是 wsdl:import

    目前我的 WSDL WebService带注释的类创建一个描述类的外部 wsdl 它通过以下方式做到这一点
  • 仅在悬停时过渡

    我有这个 hello opacity 0 transition all 220ms ease 0s hello hover opacity 1 我希望过渡效果仅在用户时可见hover in 而不是当它们悬停时 那可能吗 在本例中将过渡添加到
  • 如何在 PHP 中向 div 添加效果“隐藏(“慢”)”

    我有一个在 PHP 中名为 formscontainer 的 div 中重复多次的表单 同时 我想让表单提交时各自的 div 消失 效果隐藏 慢 这是示例代码
  • 使用特殊字符对数组进行排序 - iPhone

    我有一个带有法语字符串的数组 可以说 grener 和 exact 我想对其进行排序 例如 grener 是第一个 当我做 NSSortDescriptor descriptor NSSortDescriptor alloc initWit
  • 将项目添加到 IRfcTable

    我有一个函数 它的参数之一是一个表 T ITEMS 表项的类型 结构为 Z ITEM 具有两个字段 值 数量 如何向此表添加 Z ITEM 类型的项目 我所做的是以下代码 IRfcFunction fnct repo CreateFunct
  • C++ 最常用的 XML 库是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我通过谷歌快速搜索看到了一些图书馆 C 最常用的 XML 实现是什么 我计划使用 XML 作为程序配置的方式 我喜欢 XML 因为我将利用它的树状结
  • 从无任务上下文同步访问参与者属性

    整合actors使用现有代码似乎并不像苹果希望你相信的那么简单 考虑以下简单的参与者 actor Foo var value Int 0 尝试从任何地方访问此属性AppKit UIKit 无任务 控制器无法工作 因为每个Task是异步的 c
  • 实现生产者消费者模式

    我正在尝试编写一个邮件实用程序 将邮件放入队列中 然后由消费者线程使用 我正在尝试实现典型的生产者 消费者模式 但出了问题 我刚刚写了一个骨架 但该骨架没有按预期工作 MailProducer java public class MailP
  • Java 与多个对象/锁的同步

    我想知道是否有一个包或模型可以帮助我解决这种情况 假设我有 3 个线程和一堆对象 A B C D E F T1需要锁A B T2需要锁B C D T3需要锁E F 在这种情况下 如果 T1 和 T3 同时运行就可以了 此外 T2 和 T3
  • 通过使用 shell 脚本替换文件名中的特定模式来重命名多个文件[重复]

    这个问题在这里已经有答案了 编写一个简单的脚本来自动重命名许多文件 例如 我们希望将文件 001 jpg 重命名为用户定义的字符串 001 jpg 例如 MyVacation20110725 001 jpg 该脚本的用途是让数码相机照片具有
  • 不要等待页面加载

    我的问题是 我必须从中获取数据的站点加载花费了太多时间 这增加了测试用例的执行时间 我不想等待整个网站加载 我能做些什么 我使用了 30 秒的超时 但即使超过时间也不会引发异常 可能所有的javascript都是在网页的onload事件中调
  • 如何从 JFrame 的中心元素显示不同的页面(已设置为 BorderLayout)

    import java awt BorderLayout import java awt Component import javax swing JFrame import javax swing border Border public
  • 使用 Wix 升级

    我尝试了页面上列出的几乎所有解决方案如何实现WiX安装程序升级 但没有升级成功 升级的时候总是提示这个信息 已安装此产品的另一个版本 无法继续安装此版本 要配置或删除此产品的现有版本 请使用控制面板上的添加 删除程序 当我跟踪安装程序日志时
  • 用于匹配 JavaScript 括号和方括号的正则表达式

    我有这个与括号内的文本匹配的正则表达式 g 我希望能够匹配圆括号和方括号 这样它就能检测到字符串中的圆括号和方括号 这样我就可以给它着色 这应该是字符串 The quick brown fox 我想上色 quick and fox 所以我需
  • 为什么我无法编译 C# 中类接口中声明的自定义事件

    假设我有这个 public interface ISlider event CustomEventDelegate CustomEvent 在我实现 ISlider 的课程中 我尝试了这个 public CustomEventDelegat
  • Angular 控制器未使用 OcLazyLoad 和 ngRoute 加载

    我有一个应用程序 最初加载了大量脚本 并且随着开发的进行 该列表不断增长 我想在需要时延迟加载包含控制器的脚本 我使用 OcLazyLoad 和 ngRoute 作为路由选项 我确实尝试了 ui route 它实际上具有相同的最终结果 但导
  • 如何在XML中使用外部实体?

    我试图了解如何使用外部实体 但我遗漏了一些东西 我有第一个文件 测试实体 xml
  • Node.js readFileSync ZIP 文件

    我正在尝试读取 ZIP 文件并将其输出到浏览器 获取页面上显示的代码并将其另存为 ZIP 文件 fs readFileSync dir file zip utf 8 当我这样做时 我得到的输出以PK coG filename txt并持续一