Xpages 将附件从当前文档复制到新文档

Xpages Copy Attachment from current document to new document

我有一个 xpage,其中的文档有多个附件,我想将一个选定的附件复制到新的新文档以进一步处理它。

所以现在,到目前为止,我能够在 NotesEmbeddedObject.I 中获得选定的附件,有一个按钮和 onclick 脚本是..

代码:

 var attachmentDoc:NotesDocument=database.getDocumentByUNID(currentDocId);
  // where currentDocId is the document with all the attachments.
 var attchment:NotesEmbeddedObject=attachmentDoc.getAttachment("someFile.txt");
 // Just to verify
 if(attchment == null){
 view.postScript("alert('Attachment not Exist')");
 }else{
  view.postScript("alert('"+attchment +"')");
 }

上面的代码工作 perfect.It 意味着现在我有附件 now.Now 我的任务是将它复制到新文档。

我已经通过研究尝试了。

  // in above else 
var doc_new_attach:NotesDocument = database.createDocument();
var mimeRoot:NotesMIMEEntity=doc_new_attach.getMIMEEntity("Body");
var child:NotesMIMEEntity=mimeRoot.createChildEntity();
var is = new java.io.BufferedInputStream(attchment.getInputStream());
var stream:NotesStream = session.createStream();
stream.setContents(is);
child.setContentFromBytes(stream, attchment.getType(),NotesMIMEEntity.ENC_IDENTITY_BINARY); 

实际上我不喜欢注释 Rich-text,另一种我觉得更容易实现的方法是 Document.copyAllItems(Document doc,boolean replace),而不是删除不必要的内容。但是想知道如何将选中的附件复制并添加到其他文档中。

如有任何建议,我们将不胜感激..

Document.copyItem(Item)可能是你需要的,把指定的Item复制到指定的Document.

获取从一个文档到另一个文档的选择性附件,

代码:

 session.setConvertMime(false);
 var attachmentDoc:NotesDocument=database.getDocumentByUNID(currentDocId);
  // where currentDocId is the document with all the attachments.
 var attchment:NotesEmbeddedObject=attachmentDoc.getAttachment("someFile.txt");
 // Just to verify
 if(attchment == null){
     view.postScript("alert('Attachment not Exist')");
 }
 else
 {
     var fileName = "someFile.txt";
     var doc_new_attach:NotesDocument = database.createDocument();  
     var body:NotesMIMEEntity= doc_new_attach.createMIMEEntity(fileName);
     var bodyHeader:NotesMIMEHeader = body.createHeader("Content-Disposition");
     var isHeaderValSet = bodyHeader.setHeaderVal("attachment; filename=\"" + fileName + "\"");    
    if (!isHeaderValSet) {
         throw new ComponentException("Could not set MIME header value.");
    }
    var is = new java.io.BufferedInputStream(attchment.getInputStream());   
    var stream:NotesStream = session.createStream();
    stream.setContents(is);

    var mimeType = "text/csv"; 
    body.setContentFromBytes(stream, mimeType, 1730);    
    doc_new_attach.replaceItemValue("Form","AttachmentTesting");
    doc_new_attach.save(false);

    session.setConvertMime(true);
 }

在上面的代码中,我已经对 "mimeType" 进行了硬编码,因为我无法从包含附件和 "attchment.getType();" returns "Interger" 未被 "mimeType" 接受。可以帮助我获取内容类型。 否则,一切都会完美地工作,以获取我需要的附件并将其从一个文档放到另一个文档中。