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 |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/extend/util/util.go b/extend/util/util.go
index 89fc165..9ff0e64 100644
--- a/extend/util/util.go
+++ b/extend/util/util.go
@@ -1,8 +1,11 @@
 package util
 
 import (
+	"archive/tar"
 	"archive/zip"
+	"basic.com/valib/logger.git"
 	"bytes"
+	"compress/gzip"
 	"crypto/md5"
 	"encoding/hex"
 	"encoding/json"
@@ -300,6 +303,61 @@
 	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 {

--
Gitblit v1.8.0