我可以将文件附加到作为InputStream
接收的domino文档的RichTextItem
。以下是代码片段:
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());
.....
}
这很好用。但是,如果我不想将文件写入磁盘,比如我将其保存到上面片段中的File
,即attFile
,该怎么办。有没有一种方法可以将InputStream
的内容写入一个文件(可能是使用一些notes文档),并在不保存的情况下将其附加到磁盘上。
我实际上找到了问题的解决方案。也许这对有帮助
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();
.....
}
通过JAVA API(或LotusScript,COM),除了embedObject方法之外,我看不到任何方法可以将附件添加到富文本项。不幸的是,embedObject方法只获取一个指向要导入的文件位置的字符串。如果没有传入实际对象的方法,似乎需要将文件放在磁盘上并传递该文件的路径。