Как добавлять и удалять вложения с помощью MIME - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь удалить вложение, которое было ранее добавлено с помощью 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>

В итрии мой документ выглядит так

enter image description here

Когда я пытаюсь использовать ссылку для удаления вложения, я получаю следующую ошибку

2018-11-22 10:27:48 HTTP JVM: сбой удаления Ошибка вызоваметод 'getEmbeddedObject (string)' для объекта типа 'lotus.domino.local.Item [Статическая оболочка Java-интерфейса, lotus.domino.local.Item: lotus.domino.Item]'

вот чтомоя веб-страница выглядит как

enter image description here

Что может быть причиной этого

Спасибо

Томас

См. Также этот вопрос Как правильно удалить MIME-вложения

1 Ответ

0 голосов
/ 22 ноября 2018

getFirstItem возвращает NotesItem, а не NotesRichTextItem.Я не уверен, что SSJS :NotesRichTextItem приводит результат к NotesRichTextItem.В Java это будет RichTextItem it = (RichTextItem) nd.getDocument().getFirstItem("Body");.Добавление (RichTextItem) после = заставляет API преобразовать результат в этот класс.Может быть, это также необходимо в SSJS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...