golang服务器:如何连续检索多个文件

时间:2016-10-15 06:42:49

标签: http go tcpserver

我已经实现了基于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实现吗?

1 个答案:

答案 0 :(得分:1)

由于FormFile索引已发布表单中的文件,因此需要已解析整个表单。来自FormFile文档:

  

如果需要,FormFile会调用ParseMultipartForm和ParseForm。

如果您想一次流式传输多部分表单,请使用Request.MultipartReader