Golang计算文件MD5值 | 青训营笔记

750 阅读1分钟

前言

青训营抖音项目的视频有时候会比较大,所以希望相同的文件不重复上传到七牛云。七牛云以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
}