javascript - 使用 zip.js 压缩一个 Blob

标签 javascript file compression zip blob

我需要在 WebSQl 中存储大量文本,所以我决定用 zip.js 压缩文本 并存储压缩的 Blob。

根据文档,您可以按如下方式压缩 blob:

function zipBlob(filename, blob, callback) {
   // use a zip.BlobWriter object to write zipped data into a Blob object
   zip.createWriter(new zip.BlobWriter("application/zip"), function(zipWriter) {
      // use a BlobReader object to read the data stored into blob variable
      zipWriter.add(filename, new zip.BlobReader(blob), function() {
         // close the writer and calls callback function
         zipWriter.close(callback);
      });
   }, onerror);
}

虽然这行得通,但我不明白为什么需要指定文件名。这真的有必要吗?而且,这个文件在压缩后总是被删除吗?

最佳答案

在这里检查这个答案 - 它不需要文件名,我敢打赌它更容易使用。我已经尝试了很多 javascript 压缩/解压缩实现,并被诸如原始数据大小限制、整体速度、效率等问题所困扰。在 javascript 中找到一个好的压缩/解压缩实现非常困难,但幸运的是这个还没有让我失望(我已经用了很多):

Compressing a blob in javascript

您当前的实现需要文件名,因为它试图与 zip 保持一致,以便您可以将其保存到桌面,并使用您喜欢的 zip 实用程序打开它。听起来您的挑战与我的非常相似,我需要在浏览器和服务器的本地存储中保存和恢复压缩项目。

关于javascript - 使用 zip.js 压缩一个 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15275068/

相关文章:

c++ - 从位置(到位置)读取文件

java - 我如何编辑此代码,以便服务器在发送到客户端之前压缩文件,客户端在接收后解压缩该文件

javascript - 使用 Puppeteer 获取 HTML 属性的值

delphi - 防止 TWebBrowser 接受删除的文件

javascript - jquery如何使复选框始终处于选中状态

php - 如何防止 Laravel 中的重复文件名?

java - GZIPOutputStream 未正确压缩 HTTP 响应的字符串

compression - 如何在 nginX 中压缩 js 文件?

javascript - 在JS中分解字符串

javascript - 检查横幅是否加载