我正在尝试使用 gRPC 传输文件。我可以使用 gRPC 流发送数据,分成块。我正在寻找将文件名与数据一起传输的方法。我确定我缺少一个明显的解决方案。但这里有一些我能想到的方法
- 与每个块一起发送文件名,这是重传相同数据的明显缺点。.proto 文件看起来像
service KeyValueStore {
rpc upload (stream FileData) returns (UploadStatus) {}
}
message FileData {
string filename = 1;
bytes data = 2;
}
- 将文件名作为第一个块发送。接收器需要知道这种编码。
但我正在寻找一个非hacky的解决方案。
我希望有一个像
service KeyValueStore {
rpc upload (FileName, stream FileData) returns (UploadStatus) {}
}
但根据这里的回答,这是不可能的,也不鼓励
一般来说,有没有一种更简洁的方法来调用一个结合了普通参数和流参数的过程?或达到同样的效果?