![](/api/file/getImage?fileId=5e04ef61e8ede61732000008) 目前采用的博客主题需要有一张图片,但是Leanote客户端提交的内容默认似乎不处理这个,在网页上打开博客,编辑修改的话倒是正常的,所以,就研究了一下leanote的源码,然后,修改了一下API的相关代码来实现这个操作 ## 修改定义 文件:app/info/Api.go 结构:ApiNote 将原代码中注释掉的ImgSrc给取掉注释,修改后类似这样 ``` type ApiNote struct { NoteId string NotebookId string UserId string Title string Desc string ImgSrc string Tags []string Abstract string Content string IsMarkdown bool // FromUserId string // 为共享而新建 IsBlog bool // 是否是blog, 更新note不需要修改, 添加note时才有可能用到, 此时需要判断notebook是否设为Blog IsTrash bool IsDeleted bool Usn int Files []NoteFile CreatedTime time.Time UpdatedTime time.Time PublicTime time.Time } ``` ## 修改代码 这里共有两处要个性,一处是添加笔记,一处是修改笔记 ### 添加笔记 文件:app/controllers/api/ApiNoteController.go 函数:AddNote 需要修改两处,第一处: 搜索: ``` noteOrContent.Files[i] = file ``` 在下面添加: ``` if(noteOrContent.ImgSrc == "") { noteOrContent.ImgSrc = "/api/file/getImage?fileId=" + fileId } ``` 第二处,将下面的 ``` note := info.Note{UserId: userId, NoteId: noteId, NotebookId: bson.ObjectIdHex(noteOrContent.NotebookId), Title: noteOrContent.Title, Tags: noteOrContent.Tags, Desc: noteOrContent.Desc, // ImgSrc: noteOrContent.ImgSrc, IsBlog: noteOrContent.IsBlog, IsMarkdown: noteOrContent.IsMarkdown, AttachNum: attachNum, CreatedTime: noteOrContent.CreatedTime, UpdatedTime: noteOrContent.UpdatedTime, } ``` 中的注释给取掉: ``` note := info.Note{UserId: userId, NoteId: noteId, NotebookId: bson.ObjectIdHex(noteOrContent.NotebookId), Title: noteOrContent.Title, Tags: noteOrContent.Tags, Desc: noteOrContent.Desc, ImgSrc: noteOrContent.ImgSrc, IsBlog: noteOrContent.IsBlog, IsMarkdown: noteOrContent.IsMarkdown, AttachNum: attachNum, CreatedTime: noteOrContent.CreatedTime, UpdatedTime: noteOrContent.UpdatedTime, } ``` ### 修改 文件:app/controllers/api/ApiNoteController.go 函数:AddNote 同样有两处,第一处基本上相同 搜索: ``` noteOrContent.Files[i] = file ``` 在下面添加: ``` if(noteOrContent.ImgSrc == "" ) { noteOrContent.ImgSrc = "/api/file/getImage?fileId=" + fileId } ``` 第二处,往下找关键字ImgSrc,找到后,将 ``` /* if c.Has("ImgSrc") { needUpdateNote = true noteUpdate["ImgSrc"] = noteOrContent.ImgSrc } */ ``` 替换,或者在下面添加: ``` if(noteOrContent.ImgSrc != "") { needUpdateNote = true noteUpdate["ImgSrc"] = noteOrContent.ImgSrc } ``` 重新编译,启动即可。 ## 一个BUG 今天在使用的时候发现,原来附件和图片是使用同一接口来处理的,所以,如果先上传的是附件的话,就会取错图片,所以需要修正一下,目前,修正的代码已经提交[github](https://github.com/htmambo/leanote/commit/466911b7468f6f47d83f0b531bbb409db0a5114b)。 最后修改:5年前 © 著作权归作者所有