从文件系统中读取二进制文件作为BLOB,以便在rhino中使用javascript

从文件系统中读取二进制文件作为BLOB,以便在rhino中使用javascript,java,javascript,rhino,xlsb,Java,Javascript,Rhino,Xlsb,我打算在rhino上使用SheetJS。sheetjs接受一个二进制对象(如果我正确的话是BLOB)作为输入。因此,我需要使用搁浅的java i/O方法从系统中读取一个文件,并将其存储到blob中,然后再将其传递给sheetjs。例如: var XLDataWorkBook = XLSX.read(blobInput, {type : "binary"}); 因此,我如何从java中的二进制文件创建BLOB(或适当的类型),以便将其传入 我想我不能传递流,因为我想XLSX需要一个完全创建的对象

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

var XLDataWorkBook = XLSX.read(blobInput, {type : "binary"});
因此,我如何从java中的二进制文件创建BLOB(或适当的类型),以便将其传入


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

我自己找到了答案。我能用这种方法完成它。
使用InputStream读取文件,然后通过tearrayoutputstream将其写入。如下图所示

ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 

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

byte[] byteArray =   buffer.toByteArray();
最后,我使用apache.commons.codec.binary包中的“Base64.encodeBase64String()”方法将其转换为Base64字符串(在我的例子中也适用)。因此,我可以将Base64字符串作为方法参数传递

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

byte[] byteArray =   buffer.toByteArray();