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

golang server: how to retrieve multiple files continuously

我已经实现了一个基于gin(golang web框架)的http服务器。

我 post 2 张图片到服务器 curl multipart/form-data:

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() 执行时间,它 returns 在检索到 所有 2 个文件后

我的问题:

1) 如何连续的检索这些文件,就像遍历链表一样;

2) http multipart 是个不错的选择吗,我应该用 TCP/STCP 实现吗?

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

FormFile calls ParseMultipartForm and ParseForm if necessary.

如果你想一次传输一个部分的多部分形式,使用Request.MultipartReader