From 17bd0564775dd89a9e7f9dafb44624b05866714d Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期五, 20 十二月 2019 18:31:36 +0800 Subject: [PATCH] upgrade use tar.gz --- extend/util/util.go | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 89 insertions(+), 0 deletions(-) diff --git a/extend/util/util.go b/extend/util/util.go index 845ff42..9ff0e64 100644 --- a/extend/util/util.go +++ b/extend/util/util.go @@ -1,8 +1,13 @@ package util import ( + "archive/tar" "archive/zip" + "basic.com/valib/logger.git" "bytes" + "compress/gzip" + "crypto/md5" + "encoding/hex" "encoding/json" "image" "io" @@ -296,4 +301,88 @@ } return nil +} + +func TarGzCheck(filePath string) bool { + f, err := os.Open(filePath) + if err != nil { + return false + } + defer f.Close() + buf := make([]byte, 4) + if n, err := f.Read(buf); err != nil || n < 4 { + return false + } + fType := hex.EncodeToString(buf) + logger.Debug("file type :",fType) + return fType == "8b1f" +} + +//瑙e帇 tar.gz +func DeCompress(tarFile, dest string) error { + srcFile, err := os.Open(tarFile) + if err != nil { + return err + } + defer srcFile.Close() + gr, err := gzip.NewReader(srcFile) + if err != nil { + return err + } + defer gr.Close() + tr := tar.NewReader(gr) + for { + hdr, err := tr.Next() + if err != nil { + if err == io.EOF { + break + } else { + return err + } + } + filename := dest + hdr.Name + file, err := createFile(filename) + if err != nil { + return err + } + io.Copy(file, tr) + } + return nil +} + +func createFile(name string) (*os.File, error) { + err := os.MkdirAll(string([]rune(name)[0:strings.LastIndex(name, "/")]), 0755) + if err != nil { + return nil, err + } + return os.Create(name) +} + +func FormatNum(oNum int,n int) string { + m := 0 + for { + oNum = oNum / 10 + m++ + if oNum == 0 { + break + } + } + fmtStr := "%0"+strconv.Itoa(m)+"d" + return fmt.Sprintf(fmtStr, n) +} + +func FileMd5(path string) (string,error){ + file, err := os.Open(path) + if err !=nil { + return "",err + } + + defer file.Close() + + _md5 := md5.New() + if _,err := io.Copy(_md5, file);err != nil { + return "",err + } + + return hex.EncodeToString(_md5.Sum(nil)),nil } \ No newline at end of file -- Gitblit v1.8.0