1. 首页

golang图片地址直传阿里云,内容详情的图片替换

今天写了一个搬选的程序,自动把一个商城的商品(不是自己公司的商城程序)传到新的商城

需要的逻辑大概是先获取商品列表,再通过列表的id获取商品信息跟商品详情,再把这些数据保存到新的数据库,其中麻烦的一点就是图片如果直接用原程序的话,后期该商城过期了后图片地址会失效,所以需要把商品图片,轮播图,商品详情里面的图片都上传到自己服务器或者oss,并且替换掉数据里原来的地址

下面贴一下核心的图片地址上传到阿里云的代码

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
    "time"

    "github.com/aliyun/aliyun-oss-go-sdk/oss"
)

const (
    key             = "LTAI5t*******1TQhwznVK1"
    AccessKeySecret = "jthYx*******e9gfCGY2nSPO"
    Endpoint        = "oss-cn-hangzhou.aliyuncs.com"
    BucketName      = "li*****on"
)

var (
    long = 0
    ti1  = int64(0)
)

func Uploads(str []interface{}) []interface{} {
    for k, v := range str {
        str[k] = Upload(v.(string))
    }
    return str
}

func Upload(url string) string {
    // 创建OSSClient实例。
    client, err := oss.New(Endpoint, key, AccessKeySecret)
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    t1 := time.Now().Unix()
    if ti1 != t1 { //如果时间戳不一样,那么归零
        long = 0
    }
    ti1 = t1
    long++
    obj := fmt.Sprintf("qby/%d%d.jpg", t1, long)
    // 获取存储空间。
    bucket, err := client.Bucket(BucketName)
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 上传Byte数组。
    err = bucket.PutObject(obj, bytes.NewReader(ReadImgData(url)))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    return "https://" + BucketName + "." + Endpoint + "/" + obj
}

//获取C的图片数据
func ReadImgData(url string) []byte {
    resp, err := http.Get(url)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    pix, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    return pix
}

详情的图片替换代码

//详情
func xiangqin(id interface{}) (str string) {
    url := fmt.Sprintf("http://www.ch************************iyHtml?item_id=%v&sid=****", id)
    body, _ := HttpGet(url)
    //fmt.Printf("\n详情信息%+v"+url, body)
    //return
    if len(body["_diyHtml"].([]interface{})) == 0 {
        return
    }
    db := body["_diyHtml"].([]interface{})[0].(map[string]interface{})["content"].(map[string]interface{})
    if db["fulltext"] == nil {
        return
    }
    str = db["fulltext"].(string)
    //此处是查找图片信息的正则
    reg1 := regexp.MustCompile(`http://******p.cn\S*[.jpg|.gif|.png|.jpeg]@!w6

   
         

本文来自投稿,不代表本人立场,如若转载,请注明出处;如有问题您可以发邮件到:itlun@qq.com