如何从multipart.File

时间:2017-06-21 05:59:13

标签: go

在Go中,获取* multipart.File的md5的正确方法是什么?

这是我的代码,它引用了错误的md5:

// GetFileMd5 count file's md5
// return md5 string
func GetFileMd5(file multipart.File) (md5Str string) {
    h := md5.New()
    if _, err := file.Seek(0, 0); err != nil {
        log.Error("Get file md5 error: %v", err)
    }
    if _, err := io.Copy(h, file); err != nil {
        log.Error("Get file md5 error: %v", err)
    }
    md5Str = hex.EncodeToString(h.Sum(nil))
    log.Debug("File md5 is: %s", md5Str)
    return md5Str
}

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错,但请检查您收到和存储文件的方式。如果将它们存储在内存中,则不应调用Seek方法。

如果您想计算上传文件的哈希值,同时在本地保存或上传到云端,那么您可以使用MultiWriter