猿问

golang - 如何检查 multipart.File 信息

当用户上传文件时,使用 r.FormFile("file") 会得到一个 multipart.File、一个 multipart.FileHeader 和一个错误。

我的问题是如何只获取有关上传文件的信息,例如,它的大小,如果它是一个图像,它的维度等等。

我真的不知道从哪里开始,所以任何帮助都会很棒。


眼眸繁星
浏览 423回答 3
3回答

阿晨1998

我发现对于此类测试非常简单的另一种方法是将测试资产放置在相对于包的 test_data 目录中。在我的测试文件中,我通常会创建一个帮助程序来创建 *http.Request 的实例,它允许我在 multipart.File 上非常轻松地运行表测试(为简洁起见,已删除错误检查)。func createMockRequest(pathToFile string) *http.Request {    file, err := os.Open(pathToFile)    if err != nil {        return nil    }    defer file.Close()    body := &bytes.Buffer{}    writer := multipart.NewWriter(body)    part, err := writer.CreateFormFile("file", filepath.Base(pathToFile))    if err != nil {        return nil    }    _, _ = io.Copy(part, file)    err = writer.Close()    if err != nil {        return nil    }    // the body is the only important data for creating a new request with the form data attached    req, _ := http.NewRequest("POST", "", body)    req.Header.Set("Content-Type", writer.FormDataContentType())    return req}
随时随地看视频慕课网APP

相关分类

Go
我要回答