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

RafaelShin · · 2962 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

给定字符串 ``` 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) } ```

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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2962 次点击  
加入收藏 微博
4 回复  |  直到 2022-12-23 09:53:21
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传