我正在使用 Java、Azure SDK 和 Apache POI。我的要求是使用 Apache POI 准备一个 excel 并将其上传到 Azure blob 存储。但我不应该在上传之前将 Excel 文件存储在本地。有什么解决办法吗?
网上查了一下,发现
CloudBlockBlob.openOutputStream()
可以和ByteArrayOutputStream
结合使用,上传excel文件而不需要保存在本地。
下面这段代码可以给出一个想法:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// write ByteArrayOutputStream to work book
workbook.write(baos);
// get destination cloud blob directory for the archive
CloudBlobDirectory destCloudBlobDirectory = container
.getDirectoryReference("Some Directory");
// get destination cloud block blob with reference to the source blob
CloudBlockBlob destCloudBlockBlob = destCloudBlobDirectory
.getBlockBlobReference("fileName");
// open blob output stream
BlobOutputStream blobOutputStream = destCloudBlockBlob.openOutputStream();
destCloudBlockBlob.getProperties().setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");