2016-01-22 124 views
1

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

所以,现在,到目前为止,我能够得到的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 +"')"); 
} 

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

我已经试过研究了。

// 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); 

其实我坏与笔记富文本中,另一种方式来达致这就是我的感觉是更容易Document.copyAllItems(书籍DOC,布尔替换),比移除什么是不必要的。但想知道如何复制并添加选定的attchment到其他文档。

任何建议将真正体会..

回答

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

在上面的代码,我硬编码的“mime类型”,因为我不能够从文件中获取内容类型其中包含acttachment和“attchment.getType();”返回不被“mimeType”拦截的“Interger”。可以帮助我获取内容类型。 否则,所有的工作都会完美地完成,并将我需要的附件从一个文档传送到另一个文档。

0

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

+0

是的,可能Document.copyItem(Item)将帮助我从该文档中获取项目,例如Document.copyItem(Item),我将能够从文档中获取所有附件,但实际上我只需要选择一个从项目附件。我得到了这个解决方案,请检查我发布的答案,纠正我,如果我错了。 –