使用Evernote Node.js SDK创建含图片资源的笔记时,图片仅显示左侧缩略图未在笔记内容中展示的问题求助
Evernote 笔记图片仅显示左侧缩略图,正文不显示的解决办法
我一眼就发现问题所在了!你在makeNote函数里犯了个很容易踩的顺序坑——你先把初始的nBody赋值给了ourNote.content,之后才把引用图片的<en-media>标签追加到nBody里,但这时候ourNote.content根本没同步更新。相当于你给Evernote传的笔记内容还是没有图片引用的旧版本,所以图片只会出现在左侧附件栏,正文里完全找不到它的身影。
下面是修正后的完整makeNote函数,核心就是调整代码顺序,确保包含图片引用的完整内容被赋值给笔记对象:
function makeNote(noteStore, noteTitle, noteBody, parentNotebook, resources) { var nBody = '<?xml version="1.0" encoding="UTF-8"?>'; nBody += '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'; nBody += '<en-note>' + noteBody; // 先处理资源引用标签,把它们加入到nBody中 if (resources && resources.length > 0) { nBody += '<br /><br />'; for (var i in resources) { nBody += 'Attachment with hash: <br /><en-media type="' + resources[i].mime + '" hash="' + resources[i].data.bodyHash + '" width="200" height="200" /><br />'; } } // 最后闭合标签,再把完整的内容赋值给笔记对象 nBody += '</en-note>'; var ourNote = new Evernote.Types.Note(); ourNote.title = noteTitle; ourNote.content = nBody; if (resources && resources.length > 0) { ourNote.resources = resources; } if (parentNotebook && parentNotebook.guid) { ourNote.notebookGuid = parentNotebook.guid; } noteStore.createNote(ourNote) .then(function(note) { console.log(note); }).catch(function(err) { console.log(err); }); }
再额外提醒两个关键点:
- 确保
<en-media>标签的hash属性和资源的bodyHash完全一致,大小写也不能错——你的createResource函数里的哈希计算是对的,保持这个逻辑就行 - 资源的
mime类型要和图片格式匹配,比如PNG图要改成image/png,避免格式不兼容的问题
内容的提问来源于stack exchange,提问作者user2097439
相关产品推荐
相关产品推荐

