用于记录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))