1

我打算将 SheetJS 与 rhino 一起使用。sheetjs 将二进制对象(如果我是正确的,则为 BLOB)作为输入。因此,我需要使用搁浅的 java I/O 方法从系统中读取一个文件,并将其存储到一个 blob 中,然后再将其传递给 sheetjs。例如:-

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

那么我怎样才能从java中的二进制文件创建一个BLOB(或适当的类型)以便将它传入。

我想我不能传递流,因为我猜 XLSX 需要一个完全创建的对象来处理。

4

1 回答 1

2

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

ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 

...

buffer.write(bytes, 0, len); 

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

byte[] byteArray =   buffer.toByteArray();

最后,我确实使用apache.commons.codec.binary包中的“ Base64.encodeBase64String() ”方法将其转换为 Base64 字符串(这也适用于我的情况) 。所以我可以将Base64 String作为方法参数传递。

如果您进一步需要,还有许多可用于Base64 到 Blob转换的库(第 3 方和默认库)。

于 2015-04-26T18:06:59.120 回答