0

我目前正在开发一个使用 jquery 文件上传器上传 .dcm 文件的 dicom 文件上传系统。它工作正常,但由于 DICOM 数据集可能会变得非常大,我想在上传之前使用 JSZip 压缩文件。

我只是将文件对象传递给返回压缩文件对象的 zip 函数。这适用于众所周知的文件,但不适用于 DICOM 文件。我已经尝试在压缩之前将文件编码为 base64 字符串,但这也不起作用。JSZip 总是向我抛出以下错误:

Uncaught Error: The data of 'IM-0001-0001.dcm' is in an unsupported format !

我正在使用以下文件压缩功能:

compressFile: function(data) {

    var zip = new JSZip();

    var file = data.files[0];

    zip.file(file.name, file, {binary:false});

    content = zip.generate({
        compression: 'DEFLATE'
    });

    return content;
}

我也尝试过在 .file 选项中使用 base64 和二进制,但这并没有成功。

有没有人知道如何让它工作?我是 JS 的初学者,所以我很抱歉提出了一些愚蠢的问题^^

亲切的问候

4

1 回答 1

0

您需要使用 aFileReader来读取data.files[0]first 的内容:

var reader = new FileReader();
reader.onload = (function(e) {
  var zip = new JSZip(e.target.result);

  var result = zip.generate({
    compression: 'DEFLATE'
  });

  // do something with result
}
reader.readAsArrayBuffer(data.files[0]);

另请参阅此示例

警告,FileReader是异步的:你不能让你的函数返回结果。

于 2016-02-28T14:07:40.303 回答