我已经实现了基于gin
(golang web框架)的http服务器。
我使用curl multipart/form-data
将2张图片发布到服务器:
curl -X POST -F upload0=@jpg -F upload1=@jpg -H "Content-Type: multipart/form-data" "http://server:port/path"
服务器代码如下所示:
func extractImgs(c *gin.Context) {
prefix := "prefix"
for ix := 0; ix < 2; ix++ {
file, _, err := c.Request.FormFile(prefix + strconv.Itoa(ix))
if err != nil {
// do sth.
return
}
face_recognize_async(file)
}
}
你知道,面部识别是耗时的,我希望工作流程是:
get_1st_img -> recognize_face -> get_2nd_img -> recognize_face -> ...
我打印c.Request.FormFile()
执行时间,它会在检索到所有2个文件后返回。
我的问题:
1)如何连续检索这些文件,就像遍历链表一样;
2)http multipart是一个不错的选择,我应该用TCP / STCP实现吗?
答案 0 :(得分:1)
由于FormFile
索引已发布表单中的文件,因此需要已解析整个表单。来自FormFile
文档:
如果需要,FormFile会调用ParseMultipartForm和ParseForm。
如果您想一次流式传输多部分表单,请使用Request.MultipartReader