Как добавлять и удалять вложения с помощью MIME
Я пытаюсь удалить вложение, которое ранее было добавлено с помощью MIME. это мой код
try{
var d = database.getView("Main").getFirstDocument()
var it = d.getFirstItem("Body")
var att:NotesEmbeddedObject = it.getEmbeddedObject("mydoc.docx")
var streamDOC:NotesStream = session.createStream()
streamDOC.setContents(att.getInputStream())
var newd;
newd = database.getView("NewD").getFirstDocument()
if(newd==null){
newd = database.createDocument()
newd.replaceItemValue("Form","Main")
var me = newd.createMIMEEntity("Body")
}else{
var me = newd.getMIMEEntity("Body")
}
var filename = "test.pdf"
var mc = me.createChildEntity();
var he = mc.createHeader("Content-Disposition")
he.setHeaderVal("attachment; filename=\"" + filename + "\"");
he = mc.createHeader("Content-ID");
he.setHeaderVal( "<" + filename + ">" );
mc.setContentFromBytes(streamDOC, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", NotesMIMEEntity.ENC_IDENTITY_8BIT);
newd.save()
print("success")
}catch(e){
print("fail " + e)
}
это код, который я использую для удаления прикрепленных файлов
<xp:repeat id="repeat1" rows="30"
value="#{javascript:@AttachmentNames()}" var="att"
>
<xp:text tagName="p" escape="true" id="computedField1"
value="#{javascript:att}"
>
</xp:text>
<xp:link escape="true" text="Delete" id="link2">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete"
>
<xp:this.action><![CDATA[#{javascript:try{
var it:NotesRichTextItem = nd.getDocument().getFirstItem("Body")
var eo:NotesEmbeddedObject = it.getEmbeddedObject(att)
if(eo==null){
print("No attachment found")
}else{
print("att ok")
eo.remove()
nd.save()
}
print("success delete " + e)
}catch(e){
print("fail delete " + e)
}}]]></xp:this.action>
</xp:eventHandler></xp:link>
</xp:repeat>
В итрии мой документ выглядит так
Когда я пытаюсь использовать ссылку, чтобы удалить вложение, я получаю следующую ошибку
2018-11-22 10:27:48 HTTP JVM: сбой при удалении Ошибка вызова метода "getEmbeddedObject(string)" для объекта типа "lotus.domino.local.Item [Static Java Interface Wrapper, lotus.domino.local.Item": lotus.domino.Item]'
это то, как выглядит моя веб-страница
Что может быть причиной этого
Спасибо
Томас
Смотрите также этот вопрос Как правильно удалять вложения MIME
1 ответ
getFirstItem
возвращает NotesItem, а не NotesRichTextItem. Я не уверен, SSJS :NotesRichTextItem
бросает результат в NotesRichTextItem. На Java это было бы RichTextItem it = (RichTextItem) nd.getDocument().getFirstItem("Body");
, Добавление (RichTextItem)
после =
заставляет API конвертировать результат в этот класс. Может быть, это также необходимо в SSJS.