我正在开发一个api(springboot)。其中我需要在get方法的响应体中返回fileinputstream。
预期-当前端调用get files api时,浏览器上应该打开一个文件下载提示。
问题-我们不能使用blob.downloadtofile方法,因为它将在本地计算机(或api所在的主机)上下载文件,并且我们需要一些可以在api调用时将文件直接发送到前端的东西。不过,还有另一个方法blob.download(),它返回的outputstream在api调用时无法返回。
那么,有没有什么方法可以将outputstream转换为fileinputstream,而不必保存到设备上的实际文件中呢。
示例代码-
public ByteArrayOutputStream downloadBlob() throws URISyntaxException, InvalidKeyException, StorageException, IOException {
String storageConnectionString = "DefaultEndpointsProtocol=https;" + "AccountName=" + accountName + ";"
+ "AccountKey=" + accountKey;
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
final CloudBlobContainer container = blobClient.getContainerReference("container name");
CloudBlockBlob blob = container.getBlockBlobReference("image.PNG");
ByteArrayOutputStream outputStream =new ByteArrayOutputStream();
blob.download(outputStream);
System.out.println("file downloaded");
return outputStream;
}
注意-文件可以是任何类型。
1条答案
按热度按时间kse8i1jr1#
下面是解决方案-在浏览器中点击api后,您的文件将在浏览器中下载-