我目前正在开发一个使用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的初学者,所以我很抱歉没有问题^^
亲切的问候
答案 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
是异步的:你不能让你的函数返回结果。