mxs 1 год назад
Родитель
Сommit
5d9aba96de
2 измененных файлов с 153 добавлено и 0 удалено
  1. 7 0
      go.mod
  2. 146 0
      spiderutil/oss.go

+ 7 - 0
go.mod

@@ -1,3 +1,10 @@
 module jygit.jydev.jianyu360.cn/data_capture/myself_util
 
 go 1.18
+
+require github.com/aliyun/aliyun-oss-go-sdk v3.0.1+incompatible
+
+require (
+	golang.org/x/time v0.5.0 // indirect
+	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
+)

+ 146 - 0
spiderutil/oss.go

@@ -0,0 +1,146 @@
+// oss
+package spiderutil
+
+import (
+	"bytes"
+	"crypto/sha256"
+	"fmt"
+	"github.com/aliyun/aliyun-oss-go-sdk/oss"
+	"io"
+	"io/ioutil"
+	cu "jygit.jydev.jianyu360.cn/data_capture/myself_util/commonutil"
+	"log"
+	"net/http"
+)
+
+var (
+	ossclient *oss.Client
+	//ha        = sha256.New()
+
+	ossEndpoint, ossAccessKeyId, ossAccessKeySecret, ossBucketName string
+)
+
+func OssInit(endpoint, accessKeyId, accessKeySecret, bucketName string) {
+	ossEndpoint = endpoint
+	ossAccessKeyId = accessKeyId
+	ossAccessKeySecret = accessKeySecret
+	ossBucketName = bucketName
+	client, err := oss.New(ossEndpoint, ossAccessKeyId, ossAccessKeySecret)
+	if err != nil {
+		log.Fatal("Error:", err, ossEndpoint, ossAccessKeyId, ossAccessKeySecret)
+	}
+	ossclient = client
+}
+
+func OssGetObject(objectName string) []byte {
+	cu.Catch()
+	// 获取存储空间。
+	bucket, err := ossclient.Bucket(ossBucketName)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return nil
+	}
+
+	// 下载文件到流。
+	body, err := bucket.GetObject(objectName)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return nil
+	}
+	defer body.Close()
+	data, err := ioutil.ReadAll(body)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return nil
+	}
+
+	return data
+}
+
+func OssPutObject(objectName string, fd io.Reader) (bool, error) {
+	cu.Catch()
+	// 获取存储空间。
+	bucket, err := ossclient.Bucket(ossBucketName)
+	if err != nil {
+		log.Println("Error:", err)
+		return false, err
+	}
+	// 上传文件流。
+	err = bucket.PutObject(objectName, fd)
+	if err != nil {
+		log.Println("Error:", err)
+		return false, err
+	}
+	return true, nil
+}
+
+func OssDeleteObject(objectName string) (bool, error) {
+
+	// 获取存储空间。
+	bucket, err := ossclient.Bucket(ossBucketName)
+	if err != nil {
+		log.Println("Error:", err)
+		return false, err
+	}
+	err = bucket.DeleteObject(objectName)
+	if err != nil {
+		log.Println(err)
+		return false, err
+	}
+	return true, nil
+}
+
+func demoDownFile(filename string, objectName string) {
+	bs := OssGetObject(objectName)
+	if bs != nil {
+		ioutil.WriteFile(filename, bs, 0777)
+	}
+}
+
+func GetHashKey(bs []byte) string {
+	cu.Catch()
+	ha := sha256.New()
+	ha.Write(bs)
+	hbs := ha.Sum(nil)
+	key := fmt.Sprintf("%x", hbs)
+	return key
+}
+
+func getbytes(resp *http.Response) []byte {
+	cu.Catch()
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		log.Println(err)
+		return []byte{}
+	}
+	return body
+}
+
+func getbytesBigFile(resp *http.Response) []byte {
+	cu.Catch()
+	buffer := bytes.NewBuffer(make([]byte, 0, 32*1024))
+	_, err := io.Copy(buffer, resp.Body)
+	if err != nil {
+		log.Println(err)
+		return []byte{}
+	}
+	temp := buffer.Bytes()
+	length := len(temp)
+	var body []byte
+	//are we wasting more than 10% space?
+	if cap(temp) > (length + length/10) {
+		body = make([]byte, length)
+		copy(body, temp)
+	} else {
+		body = temp
+	}
+	return body
+}
+func TypeByExt(path string) string {
+	for i := len(path) - 1; i >= 0 && path[i] != '/'; i-- {
+		if path[i] == '.' {
+			return path[i:]
+		}
+	}
+	return ""
+}