MCPcopy Index your code
hub / github.com/TruthHun/BookStack / HandleSVG

Function HandleSVG

utils/util.go:564–593  ·  view source on GitHub ↗
(doc *goquery.Document, project string)

Source from the content-addressed store, hash-verified

562}
563
564func HandleSVG(doc *goquery.Document, project string) *goquery.Document {
565 // svg 图片处理
566 doc.Find("svg").Each(func(i int, selection *goquery.Selection) {
567 ret, _ := selection.Parent().Html()
568 width, height := "", ""
569 if val, ok := selection.Attr("width"); ok {
570 width = fmt.Sprintf(` width="%v"`, val)
571 }
572 if val, ok := selection.Attr("height"); ok {
573 height = fmt.Sprintf(` height="%v"`, val)
574 }
575 ret = fmt.Sprintf(`<svg xmlns="http://www.w3.org/2000/svg"%v%v version="1.1">%v</svg>`, width, height, ret)
576 tmpFile := cryptil.Md5Crypt(ret) + ".svg"
577 src := ""
578 ioutil.WriteFile(tmpFile, []byte(ret), os.ModePerm)
579 switch StoreType {
580 case StoreLocal:
581 src = "/uploads/projects/" + project + "/" + filepath.Base(tmpFile)
582 store.ModelStoreLocal.MoveToStore(tmpFile, strings.TrimPrefix(src, "/"))
583 case StoreOss:
584 src = "projects/" + project + "/" + filepath.Base(tmpFile)
585 store.ModelStoreOss.MoveToOss(tmpFile, src, true)
586 src = "/" + src
587 }
588 selection.AfterHtml(fmt.Sprintf(`<img src="%v"/>`, src))
589 selection.Remove()
590 os.Remove(tmpFile) // 删除临时文件
591 })
592 return doc
593}
594
595// 操作图片显示
596// 如果用的是oss存储,这style是avatar、cover可选项

Callers 4

handleReleaseV1Method · 0.92
handleReleaseV2Method · 0.92
handleReleaseV3Method · 0.92
CrawlHtml2MarkdownFunction · 0.85

Calls 3

MoveToStoreMethod · 0.80
MoveToOssMethod · 0.80
FindMethod · 0.45

Tested by

no test coverage detected