使用kratos自带http transport实现文件下载上传功能,并且可以使用中间件。文件的下载接口可以使用proto定义,上传目前还未找到完美方法,为了统一,采用不定义在proto中定义,自行在server中实现。为什么上传接口不能使用proto定义?上传接口实际上可以使用proto定义,但是在解析入参时是不能解析上传的字节类型,入参的Content-Type类型只支持: x-www-form-urlencoded、json、xml、proto、yaml,而上传文件我希望以只读字节流readCloser的方式,这样可以方便使用io.Copy()的方式实现上传,而不是将文件数据转换成[]byte进行传输看一段官方的实现方式原代码 · GitHub,已简化。func downloadFile(ctx http.Context) error { f := excelize.NewFile() return f.Write(ctx.Response()) } func main() { var opts = []http.ServerOption{