用Golang的gRPC客户端流来传输文件

160 阅读1分钟

在这个例子中,我们将使用gRPC客户端向服务器传输一个图像文件。我们将使用客户端流技术,所以文件将以小块的形式被传送。一旦所有的小块被传送到服务器,它将被保存。服务器将把它的唯一名称返回给客户端。

我在代码中硬编码了一些变量,但你应该使用环境变量。另外,它也是可以改进的。我试图让它尽可能的简短。

协议缓冲区

运行protoc --go_out=plugins=grpc:. --go_opt=paths=source_relative pkg/proto/*.proto 命令来生成编译文件。

// pkg/proto/upload.proto

客户端

main.go

package main

upload.go

package upload

服务器

main.go

package main

upload.go

package upload

文件

package storage

存储

package storage

测试

// Run server first

如果你检查tmp 文件夹,some-unique-name.png 文件现在应该在那里了。