You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现Azure Blob文件下载API报错:openQueryInputStream异常

问题分析与解决方案

你用错了方法,openQueryInputStream()是用于查询Blob中的结构化数据(比如对CSV、JSON格式的Blob执行类SQL查询操作),并非用来直接下载完整Blob文件的。要实现完整文件下载,应该使用openInputStream()方法。

修正后的代码

BlobClient blobClient = blobContainerClient.getBlobClient(fileQueuePath + "/" + fileName);
boolean blobExists = blobClient.exists();
if (!blobExists) {
    return Response.status(Response.Status.NOT_FOUND)
           .entity("File not available in the specified path.")
           .build();
}

// 替换为正确的文件下载方法
InputStream is = blobClient.openInputStream();

return Response.ok(is)
       .header("content-disposition", "attachment; filename=\"" + fileName + "\"")
       .build();
}

补充说明

如果你的Blob是CSV、JSON这类结构化数据,且确实需要查询部分内容而非完整下载,才需要使用openQueryInputStream(),此时必须传入BlobQueryOptions指定查询规则,示例如下:

BlobQueryOptions queryOptions = new BlobQueryOptions("SELECT * FROM BlobStorage")
       .setInputSerialization(new BlobQueryCsvSerialization())
       .setOutputSerialization(new BlobQueryCsvSerialization());
InputStream queryIs = blobClient.openQueryInputStream(queryOptions);

但你的场景是完整下载文件,直接使用openInputStream()即可满足需求。

内容的提问来源于stack exchange,提问作者Mani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:22:14