在飞行中复制其他文件的附件

时间:2014-01-27 17:00:33

标签: xpages xpages-ssjs

在我保存当前的XPages之后,在事件postNewDocument of datasources ..我会在后端Domino文档中动态复制而不保存磁盘从另一个文档的附件,我找到了这个解决方案:

  var attachments:java.util.Vector = session.evaluate("@AttachmentNames", docReply);
  for (var i = 0; i < attachments.size(); i++) {
     embeddedObj = docReply.getAttachment(attachments.get(i).toString());
     if (embeddedObj != null) {
       bufferInStream = new java.io.BufferedInputStream(embeddedObj.getInputStream());
     }
  }

如何将每个附件流添加到当前Domino文档的RichTextItem中?

TNX

更新29月1日14: Tnx到@Sven我已将此代码插入到PostSavedocument事件中。 但是现在我还有另外一个问题......似乎损坏了我的“ Body” 即rt mime。

如果我用我的Notes客户端打开带有此RT mime的文档,我只看到新的附件而不是CKEDITOR的原始HTML内容(如果我评论以下代码......工作正确)....现在我有重新编辑的问题存在MIME文件

 session.setConvertMime(false);
var doc:NotesDocument=document1.getDocument(true);
var mimeRoot:NotesMIMEEntity=doc.getMIMEEntity("Body");
var docAttach:NotesDocument=database.getDocumentByUNID('XXXXXXXUNID'); //doc where are the attachmetns files MIME or RICHTEXT


var XSPReply=wrapDocument(docAttach);  //function in Xsnippets from Opentntf.org
var listattachs=XSPReply.getAttachmentList("Body");

for (var i=0; i<listattachs.length; i++) {
   var is=null;
   var att = listattachs[i];
   var persistentName = att.getPersistentName()==null?att.getName():att.getPersistentName();
   var cid = att.getCID();
   var eo:NotesEmbeddedObject = docAttach.getAttachment(persistentName);
   if (null != eo) {
      var child:NotesMIMEEntity=mimeRoot.createChildEntity(); //create child of original mail
      var emailHeader:NotesMIMEHeader = child.createHeader("Content-Disposition");
      emailHeader.setHeaderVal("attachment; filename=\"" + persistentName+ "\"");
      emailHeader = child.createHeader("Content-ID");
      emailHeader.setHeaderVal("<" + cid + ">");
      var is = new java.io.BufferedInputStream(eo.getInputStream());
      var stream:NotesStream = session.createStream();
      stream.setContents(is);
      child.setContentFromBytes(stream, att.getType(),NotesMIMEEntity.ENC_IDENTITY_BINARY);
    }
}

doc.closeMIMEEntities(true,"Body")
doc.save()
session.setConvertMime(true);

1 个答案:

答案 0 :(得分:3)

您可以尝试将附件添加为MIME实体。请看这里的示例:Link