4

替换字符串中的图片链接,如何提升性能呢?

 1 year ago
source link: https://studygolang.com/articles/35986
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

替换字符串中的图片链接,如何提升性能呢?

RafaelShin · 大约7小时之前 · 13 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    

给定字符串

content="<span class=""><img class="wscnph" src="https://static.images.net/202233142551646287375.jpg"><img class="wscnph" src="https://static.images.net/202233142551646287377.jpg"></span>"

使用正则匹配图片链接,然后上传图片到阿里云oss,获得图片的链接,然后替换字符串中图片的链接,如果给定的字符串中图片很多,怎样才能提高图片上传替换的速度

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("article/%d%d.png", 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
}
func RepImages(htmls string) string {
	var imgRE = regexp.MustCompile(`<img[^>]+\bsrc=["']([^"']+)["']`)
	imgs := imgRE.FindAllStringSubmatch(htmls, -1)
	out := make([]string, len(imgs))
	myImage := ""
	resHtml := htmls
	for i := range out {
		if ! strings.HasPrefix(imgs[i][1], "https://static.images.net") {
			myImage = Upload(imgs[i][1])
			resHtml = strings.Replace(resHtml, imgs[i][1], myImage, -1)
			out[i] = imgs[i][1]
			fmt.Println(strconv.Itoa(i), out[i])
		}
	}
	fmt.Println(resHtml)
    return resHtml
}

func main() {
	//a := BcryptHash("admin123$")
	//fmt.Print(a)
	content := "<span class=\"\"><img class=\"wscnph\" src=\"https://static.images.net/2022331359421646287182.jpg\"><img class=\"wscnph\" src=\"https://static.images.net/202233135942164628718777.jpg\"></span>"
	RepImages(content)
}

有疑问加站长微信联系(非本文作者)

280

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK