From bf1b38a36e0bf6de10a8f8e5f6d66b04f24cc3d6 Mon Sep 17 00:00:00 2001 From: Minho Date: Tue, 27 Mar 2018 00:55:11 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=BD=93=E5=AF=BC=E5=87=BAMarkdown?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=BD=93=E5=89=8D=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=B2=A1=E6=9C=89=E5=86=85=E5=AE=B9=EF=BC=8C=E5=88=99?= =?UTF-8?q?=E5=B0=86=E6=96=87=E6=A1=A3=E6=A0=87=E9=A2=98=E4=BD=9C=E4=B8=BA?= =?UTF-8?q?=E5=86=85=E5=AE=B9=202=E3=80=81=E4=BF=AE=E5=A4=8D=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=96=87=E6=A1=A3=E6=97=B6=E9=93=BE=E6=8E=A5=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=94=99=E8=AF=AF=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/BookModel.go | 4 +-- models/book_result.go | 80 +++++++++++++++++++++++-------------------- 2 files changed, 44 insertions(+), 40 deletions(-) diff --git a/models/BookModel.go b/models/BookModel.go index 6ca0223b..ef49a6cc 100644 --- a/models/BookModel.go +++ b/models/BookModel.go @@ -615,9 +615,9 @@ func (book *Book) ImportBook(zipPath string) error { filetil.CopyFile(linkPath, dstPath) - tempLink := strings.TrimPrefix(strings.Replace(dstPath, "\\", "/", -1), strings.Replace(conf.WorkingDirectory, "\\", "/", -1)) + tempLink := conf.BaseUrl + strings.TrimPrefix(strings.Replace(dstPath, "\\", "/", -1), strings.Replace(conf.WorkingDirectory, "\\", "/", -1)) - link = strings.TrimSuffix(tempLink, originalLink+")") + link + ")" + link = strings.TrimSuffix(link, originalLink+")") + tempLink + ")" } } diff --git a/models/book_result.go b/models/book_result.go index e928aec4..ef42c508 100644 --- a/models/book_result.go +++ b/models/book_result.go @@ -451,53 +451,57 @@ func exportMarkdown(p string, parentId int, bookId int,baseDir string) error { dirPath := filepath.Dir(docPath) os.MkdirAll(dirPath, 0766) + markdown := doc.Markdown + //如果当前文档不为空 + if strings.TrimSpace(doc.Markdown) != "" { + re := regexp.MustCompile(`!\[(.*?)\]\((.*?)\)`) - - re := regexp.MustCompile(`!\[(.*?)\]\((.*?)\)`) - - //处理文档中图片 - markdown := re.ReplaceAllStringFunc(doc.Markdown, func(image string) string { - images := re.FindAllSubmatch([]byte(image), -1) - if len(images) <= 0 || len(images[0]) < 3 { - return image - } - originalImageUrl := string(images[0][2]) - imageUrl := strings.Replace(string(originalImageUrl), "\\", "/", -1) - - //如果是本地路径,则需要将图片复制到项目目录 - if strings.HasPrefix(imageUrl, "http://") || strings.HasPrefix(imageUrl, "https://") { - imageExt := cryptil.Md5Crypt(imageUrl) + filepath.Ext(imageUrl) - - dstFile := filepath.Join(baseDir, "uploads", time.Now().Format("200601"), imageExt) - - if err := requests.DownloadAndSaveFile(imageUrl, dstFile); err == nil { - imageUrl = strings.TrimPrefix(strings.Replace(dstFile, "\\", "/", -1), strings.Replace(baseDir, "\\", "/", -1)) - if !strings.HasPrefix(imageUrl, "/") && !strings.HasPrefix(imageUrl, "\\") { - imageUrl = "/" + imageUrl - } + //处理文档中图片 + markdown = re.ReplaceAllStringFunc(doc.Markdown, func(image string) string { + images := re.FindAllSubmatch([]byte(image), -1) + if len(images) <= 0 || len(images[0]) < 3 { + return image } - }else if strings.HasPrefix(imageUrl,"/"){ - filetil.CopyFile(filepath.Join(conf.WorkingDirectory,imageUrl),filepath.Join(baseDir,imageUrl)) - } + originalImageUrl := string(images[0][2]) + imageUrl := strings.Replace(string(originalImageUrl), "\\", "/", -1) - imageUrl = strings.Replace(strings.TrimSuffix(image, originalImageUrl+")")+imageUrl+")", "\\", "/", -1) + //如果是本地路径,则需要将图片复制到项目目录 + if strings.HasPrefix(imageUrl, "http://") || strings.HasPrefix(imageUrl, "https://") { + imageExt := cryptil.Md5Crypt(imageUrl) + filepath.Ext(imageUrl) - return imageUrl - }) + dstFile := filepath.Join(baseDir, "uploads", time.Now().Format("200601"), imageExt) - linkRe := regexp.MustCompile(`\[(.*?)\]\((.*?)\)`) + if err := requests.DownloadAndSaveFile(imageUrl, dstFile); err == nil { + imageUrl = strings.TrimPrefix(strings.Replace(dstFile, "\\", "/", -1), strings.Replace(baseDir, "\\", "/", -1)) + if !strings.HasPrefix(imageUrl, "/") && !strings.HasPrefix(imageUrl, "\\") { + imageUrl = "/" + imageUrl + } + } + } else if strings.HasPrefix(imageUrl, "/") { + filetil.CopyFile(filepath.Join(conf.WorkingDirectory, imageUrl), filepath.Join(baseDir, imageUrl)) + } - markdown = linkRe.ReplaceAllStringFunc(markdown, func(link string) string { - links := linkRe.FindAllStringSubmatch(link, -1) - if len(links) > 0 && len(links[0]) >= 3 { - originalLink := links[0][2] + imageUrl = strings.Replace(strings.TrimSuffix(image, originalImageUrl+")")+imageUrl+")", "\\", "/", -1) - link = strings.TrimSuffix(link, originalLink+")") + strings.TrimPrefix(originalLink,conf.BaseUrl) + ")" - } + return imageUrl + }) - return link + linkRe := regexp.MustCompile(`\[(.*?)\]\((.*?)\)`) - }) + markdown = linkRe.ReplaceAllStringFunc(markdown, func(link string) string { + links := linkRe.FindAllStringSubmatch(link, -1) + if len(links) > 0 && len(links[0]) >= 3 { + originalLink := links[0][2] + + link = strings.TrimSuffix(link, originalLink+")") + strings.TrimPrefix(originalLink, conf.BaseUrl) + ")" + } + + return link + + }) + }else{ + markdown = "# " + doc.DocumentName + "\n" + } if err := ioutil.WriteFile(docPath, []byte(markdown), 0644); err != nil { beego.Error("导出Markdown失败=>", err) return err