在Dropzone上传之前压缩文件

时间:2016-10-07 11:16:17

标签: javascript zip dropzone.js

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

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

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发送此文件而不是添加一个用户?

1 个答案:

答案 0 :(得分:1)

这对我在dropzone 5.7.0上有效,但是我改用了while事件:

"addedFile"

我添加了压缩功能(JSZip的默认值为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); }); }); ),并保留了STORE,以使拉链对用户透明(但是他们仍然会看到较小的尺寸)。

p.s。我也不喜欢添加file.name字段...欢迎更好的解决方案。