使用JSZip压缩dcm文件

时间:2016-02-26 10:51:36

标签: javascript upload zip dicom jszip

我目前正在开发一个使用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和binary,但这并没有成功。

有没有人知道如何让它发挥作用?我是JS的初学者,所以我很抱歉没有问题^^

亲切的问候

1 个答案:

答案 0 :(得分:0)

您需要先使用FileReader来阅读data.files[0]的内容:

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]);

另见this example

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