dragonfly9527
2017-06-21 05:59
采纳率: 100%
浏览 905
已采纳

如何从multipart.File获取md5

在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
}

图片转代码服务由CSDN问答提供 功能建议

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

这是我的代码,它纠正了错误的md5:

  // GetFileMd5计数文件的md5 
 //返回md5字符串
func GetFileMd5(文件multipart.File  )(md5Str字符串){
h:= md5.New()
如果_,err:= file.Seek(0,0);  err!= nil {
 log.Error(“获取文件md5错误:%v”,err)
} 
如果_,err:= io.Copy(h,file);  err!= nil {
 log.Error(“获取文件md5错误:%v”,err)
} 
 md5Str = hex.EncodeToString(h.Sum(nil))
 log.Debug(“文件md5 是:%s“,md5Str)
返回md5Str 
} 
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongren9739 2017-06-21 21:49
    已采纳

    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.

    打赏 评论

相关推荐 更多相似问题