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

时间:2016-01-22 10:58:47

标签: xpages mime-types attachment document

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

所以现在,到目前为止,我能够在NotesEmbeddedObject中获取所选附件。我有一个按钮,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 +"')");
 }

上面的代码工作正常。这意味着现在我有了附件。现在我的任务是将其复制到新文档中。

我通过研究试了一下。

  // 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)而不是删除不需要的东西。但想知道如何复制并将选定的附件添加到其他文档。

任何建议都会非常感激..

2 个答案:

答案 0 :(得分:1)

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

代码:

 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”,因为我无法从包含acttachment和“attchment.getType();”的文档中获取内容类型。返回“interger”,它不被“mimeType”所接受。可以帮助我获取内容类型。 否则所有的休息完全可以将我需要的附件从一个文件放到另一个文件中。

答案 1 :(得分:0)

您可能需要

Document.copyItem(Item)将指定的Item复制到指定的Document