将InputStream的内容写入RichTextItem并附加到Java中的Notes文档

时间:2013-07-02 12:36:01

标签: java attachment lotus-notes lotus-domino lotus

我可以将文件附加到我以RichTextItem收到的多米诺骨牌文档的InputStream。以下是代码段:

attachDocument(InputStream is){
    .....
    File attFile = saveInputStr(is);
    Document attdoc = testdb.createDocument();
    attDoc.replaceItemValue("Form", "formAttachment");
    RichTextItem rti = (RichTextItem) attDoc.getFirstItem("attachment");
    rti.embedObject(EmbeddedObject.EMBED_ATTACHMENT, "", attFile .getPath(), attFile .getName());
    .....
}

这很好用。但是,如果我不想将文件写入磁盘,例如我将其保存到上面代码段中的FileattFile,该怎么办?有没有办法将InputStream的内容写入文件(可能正在使用一些备注文档)并将其附加到保存到磁盘上。

2 个答案:

答案 0 :(得分:2)

我实际上找到了我的问题的解决方案。也许这对某人有帮助

attachDocument(InputStream is){
        .....
        //File attFile = saveInputStr(is);
        Document attdoc = testdb.createDocument();
        attDoc.replaceItemValue("Form", "formAttachment");
        //RichTextItem rti = (RichTextItem) attDoc.getFirstItem("attachment");
        //rti.embedObject(EmbeddedObject.EMBED_ATTACHMENT, "", attFile .getPath(), attFile .getName());
        attDoc.getFirstItem("attachment");
        Stream stream = DominoUtils.getCurrentSession().createStream();
        stream.write(IOUtils.toByteArray(is));
        MIMEEntity me = attDoc.createMIMEEntity("attachment"); 
        me.setContentFromBytes(stream, "application/pdf", MIMEEntity.ENC_IDENTITY_8BIT);
        is.close();
        attdoc.save();
        .....
    }

答案 1 :(得分:1)

通过JAVA API(或LotusScript,COM)我没有看到使用除embedObject方法之外的任何东西向富文本项添加附件的方法。不幸的是,embedObject方法只接受一个指向要导入的文件位置的字符串。如果没有传递实际对象的方法,您似乎需要将该文件放在磁盘上并将路径传递给该文件。