如何使用MIME添加和删除附件 [英] How to Add and Remove attachments using MIME

查看:157
本文介绍了如何使用MIME添加和删除附件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试删除以前使用MIME添加的附件. 这是我的代码

I am trying to remove an attachment that was previously added using MIME. this is my code

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)
}

这是我用来删除附件的代码

this is the code I use for deleting the attached files

<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>

在ytria中,我的文档看起来像这样

In ytria my document looks like this

当我尝试使用链接删除附件时,出现以下错误消息

When I try to use the link to remove an attachment I get the following errror

2018-11-22 10:27:48 HTTP JVM:删除失败在类型为'lotus.domino.local.Item [静态Java接口包装器,lotus.domino. local.Item:Lotus.domino.Item]'

2018-11-22 10:27:48 HTTP JVM: fail delete Error calling method 'getEmbeddedObject(string)' on an object of type 'lotus.domino.local.Item [Static Java Interface Wrapper, lotus.domino.local.Item: lotus.domino.Item]'

这是我的网页的样子

这可能是什么原因

谢谢

托马斯

另请参阅此问题 >如何正确删除MIME附件

推荐答案

getFirstItem返回NotesItem,而不是NotesRichTextItem.我不确定SSJS :NotesRichTextItem是否将结果强制转换为NotesRichTextItem.在Java中,它将为RichTextItem it = (RichTextItem) nd.getDocument().getFirstItem("Body");.在=之后添加(RichTextItem)可使API将结果转换为该类.也许SSJS也需要这么做.

getFirstItem returns a NotesItem, not a NotesRichTextItem. I'm not sure SSJS :NotesRichTextItem casts the result to a NotesRichTextItem. In Java it would be RichTextItem it = (RichTextItem) nd.getDocument().getFirstItem("Body");. Adding (RichTextItem) after the = makes the API convert the result to that class. Maybe that's also needed in SSJS.

这篇关于如何使用MIME添加和删除附件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆