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" 接受。可以帮助我获取内容类型。
否则,一切都会完美地工作,以获取我需要的附件并将其从一个文档放到另一个文档中。
我有一个 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" 接受。可以帮助我获取内容类型。 否则,一切都会完美地工作,以获取我需要的附件并将其从一个文档放到另一个文档中。