gpt4 book ai didi

file-upload - golang - 如何检查multipart.File信息

转载 作者:行者123 更新时间:2023-12-01 19:44:23 26 4
gpt4 key购买 nike

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

我的问题是如何获取上传文件的信息。例如,它的大小、尺寸(如果是图像)等等。

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

最佳答案

获取文件大小和 MIME 类型:

// Size constants
const (
MB = 1 << 20
)

type Sizer interface {
Size() int64
}

func Sample(w http.ResponseWriter, r *http.Request) error {
if err := r.ParseMultipartForm(5 * MB); err != nil {
return err
}

// Limit upload size
r.Body = http.MaxBytesReader(w, r.Body, 5*MB) // 5 Mb

//
file, multipartFileHeader, err := r.FormFile("file")

// Create a buffer to store the header of the file in
fileHeader := make([]byte, 512)

// Copy the headers into the FileHeader buffer
if _, err := file.Read(fileHeader); err != nil {
return err
}

// set position back to start.
if _, err := file.Seek(0, 0); err != nil {
return err
}

log.Printf("Name: %#v\n", multipartFileHeader.Filename)
log.Printf("Size: %#v\n", file.(Sizer).Size())
log.Printf("MIME: %#v\n", http.DetectContentType(fileHeader))
}

示例输出:

2016/12/01 15:00:06 Name: "logo_35x30_black.png"
2016/12/01 15:00:06 Size: 18674
2016/12/01 15:00:06 MIME: "image/png"

关于file-upload - golang - 如何检查multipart.File信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17129797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com