javascript - 在 Dropzone 中上传之前的 Zip 文件

标签 javascript zip dropzone.js

有没有办法从放置在 dropzone 中的文件生成 zip,然后将该 zip 文件发送到服务器?

我正在使用 JSZip 从文件中生成 zip在 sending dropzone事件:

this.on("sending", function(file, xhr, formData) {
  var zip = new JSZip();
  zip.file("Hello.csv", file);
  zip.generateAsync({ type: "blob" }).then(function(content) {
    // see FileSaver.js
    saveAs(content, "example.zip");
  });
});

如何使 dropzone 发送此文件而不是添加一个用户?

最佳答案

这在 dropzone 5.7.0 上对我有用,但我使用了 "addedFile"事件改为:

this.on("addedfile", function (file) {
  if (file.done) {
    return;
  }
  const dz = this;
  dz.removeFile(file);
  let z = new JSZip();
  z.file(file.name, file);
  z.generateAsync({ 
    type: "blob",
    compression: "DEFLATE",
    compressionOptions: { level: 9}
    }).then(function(content) {    
      let f = new File([content], file.name);
      f.done = true;
      dz.addFile(f);
  });
});

我添加了压缩(JSZip 的默认值为 STORE )并保留了 file.name使压缩对用户透明(但是他们仍然会看到较小的尺寸)。

p.s.我不喜欢添加 f.done现场要么...欢迎更好的解决方案。

关于javascript - 在 Dropzone 中上传之前的 Zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39915899/

相关文章:

javascript - 返回 JavaScript 中的函数输入

javascript - jQuery UI 日期选择器无法正常工作

javascript - dropzone 只上传一个文件

javascript - 在 Dropzonejs 中调用 .processQueue() 时出错

javascript - 如何动态更改 dropezone.js 中的 url 选项

javascript - 如何将货币实现为静态类?

javascript - IE10+11 : onscroll & transform laggy performance

android - WhatsApp Web 在发送 .apk 文件时创建 zip

Python 如何将 zip 中的文件复制到内存中的另一个 zip?

java - 仅使用 InputStream 和 OutputStream 抽象在 Java 中即时压缩 (ZIP)。可能的?