2016-01-22 132 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),我將能夠從文檔中獲取所有附件,但實際上我只需要選擇一個從項目附件。我得到了這個解決方案,請檢查我發佈的答案,糾正我,如果我錯了。 –

相關問題