【发布时间】:2019-10-08 03:07:00
【问题描述】:
我正在使用 Goa v3 设计一个端点,允许我使用 multipart/form-data POST 请求上传文件(更准确地说是图像)。
我已经声明了以下Service:
var _ = Service("images", func() {
HTTP(func() {
Path("/images")
})
Method("upload", func() {
HTTP(func() {
POST("/")
MultipartRequest()
})
Payload(func() {
Description("Multipart request Payload")
Attribute("File", Bytes, "File")
})
Result(ImageList)
})
})
我运行goa gen 和goa example 命令来生成样板代码。除了cmd目录,example代码生成images.go主文件和multipart.go文件来声明编码器和解码器逻辑,例如:
func ImagesUploadDecoderFunc(mr *multipart.Reader, p **images.UploadPayload) error {
// Add multipart request decoder logic here
return nil
}
我可以使用mr.NextPart() 并获得对图像文件的引用,但我仍然不确定如何将其映射到images.UploadPayload 类型中的Bytes 字段(或者我应该声明另一种类型的字段来处理文件??)。
我在 Goa 文档中找不到任何示例。
【问题讨论】: