golang踩坑记录

Posted by Ethan Blog on December 29, 2020

用于记录golang开发过程中遇到的坑和解决方案,不保证解决方案的正确性。

一、上传文件获取的文件MD5值一致

golang上传文件时,获取到的文件MD5值不论什么文件它们的MD5值全部一样。
原代码:

1
2
3
4
5
6
//上传代码跳过
md5hash := md5.New()
if _, err := io.Copy(md5hash, dstFile); err != nil {
	return "",err
}
md5Str :=fmt.Sprintf("%x",md5hash.Sum(nil))
原因和解决方案

原因: 上传的文件对象没有重置游标 解决办法:重置游标即可
解决代码:

1
2
3
4
5
6
7
8
//上传代码跳过
//重置游标
_, _ = dstFile.Seek(io.SeekStart, io.SeekStart)
md5hash := md5.New()
if _, err := io.Copy(md5hash, dstFile); err != nil {
	return "",err
}
md5Str :=fmt.Sprintf("%x",md5hash.Sum(nil))