英文:
How to get md5 from multipart.File
问题
在Go语言中,获取*multipart.File的MD5的正确方法是什么?
以下是我的代码,它返回了错误的MD5值:
// GetFileMd5 计算文件的MD5值
// 返回MD5字符串
func GetFileMd5(file multipart.File) (md5Str string) {
h := md5.New()
if _, err := file.Seek(0, 0); err != nil {
log.Error("获取文件MD5错误:%v", err)
}
if _, err := io.Copy(h, file); err != nil {
log.Error("获取文件MD5错误:%v", err)
}
md5Str = hex.EncodeToString(h.Sum(nil))
log.Debug("文件的MD5值为:%s", md5Str)
return md5Str
}
以上是获取*multipart.File的MD5的正确方法。
英文:
In Go, what is the right way to get the md5 of *multipart.File?
Here is my code which retuened the wrong 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
你的代码看起来没问题,但是请检查一下你是如何接收和存储文件的。如果你将它们存储在内存中,那么就不应该调用 Seek
方法。
如果你想要计算上传文件的哈希值,并同时将其保存到本地或上传到云端,你可以使用 MultiWriter。
英文:
Your code looks ok, but check, how you receive and store files. If you store them in memory, then you shouldn't call Seek
method.
If you want to calculate hash of uploaded file and in the same time save it locally or upload to the cloud, then you can use MultiWriter.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论