123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- // 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 ""
- }
|