gRPC Java文件下载示例

时间:2018-03-16 03:08:15

标签: grpc grpc-java

我正在寻找一种如何使用gRPC实现文件下载功能的方法,但我无法在文档中找到如何完成此操作。

这样做的最佳方式是什么?我想拥有一个保存文件的gRPC服务器和一个gRPC客户端来请求来自gRPC的东西。

我查看了Java中的示例,但无法找到如何执行此操作的方法。我今天刚开始阅读有关gRPC的内容。

3 个答案:

答案 0 :(得分:8)

您必须将特定message定义为数据容器,并且必须使用stream将其传输到客户端。

proto消息和RPC服务的示例:

message DataChunk {
   bytes data = 1;
}

rpc DownloadProductImage(DownloadProductImageRequest) returns(stream DataChunk){}

在java中,您可以使用BufferedInputStream将资源流式传输到客户端。

Code example服务器端。

Code example客户端。

答案 1 :(得分:1)

有几种可能的方法。

如果您的文件足够小,您可以使用单个字符串字段定义原型文件,并将整个文本内容转储到该字段中。

如果您的文件太大而无法执行此操作,则可能需要对文件进行分块并使用流API按块发送文件块。

以下是gRPC入门的一个很好的指南。

https://grpc.io/docs/tutorials/basic/java.html

答案 2 :(得分:0)

我从db80中获得了工作示例,并创建了一个带有完整示例的PR:https://github.com/grpc/grpc-java/pull/5126

希望他们将合并此文件,然后每个人都可以拥有这个GRPC通用用例的有效示例。