Write contents of InputStream to a RichTextItem an

2019-05-27 09:18发布

I am able to attach a file to RichTextItem of a domino document that I receive as an InputStream. Below is the code snippet:

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());
    .....
}

This works fine. But what if I don't want to write the file to disk, like I save it to a File i.e. attFile in the above snippet. Is there a way that to write the contents of InputStream to a file (may be using some notes document) and attach it with out saving to disk.

2条回答
▲ chillily
2楼-- · 2019-05-27 09:53

Via the JAVA API (or LotusScript, COM) I don't see a way to add an attachment to a rich text item using anything but the embedObject method. And unfortunately the embedObject method only takes a string pointing to the file location to be imported. Without a way to pass in an actual object it seems you are required to have the file on disk and pass the path to that file.

查看更多
在下西门庆
3楼-- · 2019-05-27 10:02

I actually found solution for my question. Maybe it will be helpful for someone

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();
        .....
    }
查看更多
登录 后发表回答