【发布时间】:2016-02-26 10:51:36
【问题描述】:
我目前正在开发一个使用 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 的初学者,所以我很抱歉提出了一些无聊的问题^^
亲切的问候
【问题讨论】:
-
这与DICOM无关。 JSZip 不知道该文件是 DICOM 与任何其他类型的二进制数据。
zip.file()的第二个参数应该是数据——例如 Array 或 ArrayBuffer。这很可能是您的问题。 -
@whiskeyspider 是对的,问题是
data.files[0]的类型。你知道它的种类吗? -
data.files[0] 是一个文件对象。我已经修改了我的代码以将其转换为 base64,但这会导致一个空的 zip。我会在星期一试试你的建议。谢谢
标签: javascript upload zip dicom jszip