前言
青训营抖音项目的视频有时候会比较大,所以希望相同的文件不重复上传到七牛云。七牛云以key作为文件的唯一标识,所以我们采用计算文件的MD5作为文件的key,因此我们查阅资料总结Golang中计算文件MD5值的方法。
示例
导入依赖
import "crypto/md5"
封装方法
func CalcFileMD5(filename string) (string, error) {
f, err := os.Open(filename) //打开文件
if nil != err {
fmt.Println(err)
return "", err
}
defer f.Close()
md5Handle := md5.New() //创建 md5 句柄
_, err = io.Copy(md5Handle, f) //将文件内容拷贝到 md5 句柄中
if nil != err {
fmt.Println(err)
return "", err
}
md := md5Handle.Sum(nil) //计算 MD5 值,返回 []byte
md5str := fmt.Sprintf("%x", md) //将 []byte 转为 string
return md5str, nil
}