2015-04-23 106 views
1

我打算使用犀牛的SheetJS。并且sheetjs在输入时需要一个二进制对象(如果我是正确的,则为BLOB)。所以我需要使用滞留的java I/O方法从系统中读取一个文件,并在将它传递给sheetjs之前将其存储到一个blob中。如: -从文件系统读取一个二进制文件作为一个BLOB在javascript中使用犀牛

var XLDataWorkBook = XLSX.read(blobInput, {type : "binary"}); 

所以,我怎么可以创建一个BLOB从Java中的二进制文件(或相应的类型),以便将它传递

我想我不能通流,因为我想XLSX需求。一个完全创建的对象来处理。

回答

1

我自己找到了答案。我能够以这种方式完成它。
InputStream读取文件,然后将其写入ByteArrayOutputStream。如下所示。

ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 

...

buffer.write(bytes, 0, len); 

然后从中创建一个字节数组。

byte[] byteArray = buffer.toByteArray(); 

最后我做到了转换为Base64编码字符串(这也适用于我的情况)使用“Base64.encodeBase64String()”在apache.commons.codec.binary封装方法。所以我可以通过Base64字符串作为方法参数。

如果您还需要很多库(第三方和默认)可用于Base64到Blob的转换。

相关问题