指定したcsvファイルからMD5のハッシュ値を出力したくなり、その際に作成した関数をメモ書きします。
APIから取得したCSVファイルのハッシュ値を取得
func csvFileHash(csvfile *multipart.File) (string, error) {
// csvファイル読み込みテスト
csvFile := bufio.NewReader(*csvfile)
hash := md5.New()
if _, err := io.Copy(hash, csvFile); err != nil {
return "", fmt.Errorf("FileHashCopyError :%s", err.Error())
}
hashInBytes := hash.Sum(nil)[:16]
return hex.EncodeToString(hashInBytes), nil
}
パスから取得したCSVファイルをハッシュ化<
func csvFileHash(filePath string) (string, error) {
file, err := os.Open(filePath)
if err != nil {
errors.Wrapf(err, "failed open file : %s", filePath)
}
defer file.Close()
zr, _ := gzip.NewReader(file)
if err != nil {
errors.Wrapf(err, "failed read gz file : %s", filePath)
}
defer zr.Close()
hash := md5.New()
if _, err := io.Copy(hash, zr); err != nil {
return "", errors.Wrapf(err, "failed file hash copy : %s", filePath)
}
hashInBytes := hash.Sum(nil)[:16]
return hex.EncodeToString(hashInBytes), nil
}