在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
}
答案 0 :(得分:0)
您的代码看起来不错,但请检查您收到和存储文件的方式。如果将它们存储在内存中,则不应调用Seek
方法。
如果您想计算上传文件的哈希值,同时在本地保存或上传到云端,那么您可以使用MultiWriter。