【发布时间】:2014-07-31 21:38:18
【问题描述】:
我有一个旧的 Notes 客户端应用程序。表单上有两个包含附件的 RichText 字段。 JPG,PDF,等等。该文档还包含唯一键和其他元数据。
我想要做的是将文档上的多个附件迁移到每个附件的新文档。我从来没有在嵌入式对象方面做过很多事情,在 MIME 方面做得更少。
我目前正在使用 XPages Java,但如果需要,我可以使用 LotusScript。
我正在使用这个 sn-p:
List<EmbeddedObject> docPicture = this.getFileAttachments(doc, "picture");
List<EmbeddedObject> docPDF = this.getFileAttachments(doc, "pdf");
for (EmbeddedObject eoPic : docPicture) {
picCount++;
Document newDoc = currentDatabase.createDocument();
newDoc.replaceItemValue("form", "fm_file");
newDoc.replaceItemValue("uploadToken", doc.getItemValueString("barCodeHuman"));
newDoc.replaceItemValue("fileName", eoPic.getName());
newDoc.replaceItemValue("size", eoPic.getFileSize());
fileName = eoPic.getName();
fileType = fileName.substring(fileName.length() - 3);
newDoc.replaceItemValue("type", this.getMIMEType(fileType));
// Extract Attachment and Add To Attachment Document
InputStream attachInputStream = eoPic.getInputStream();
Stream attachStream = session.createStream();
attachStream.setContents(attachInputStream);
MIMEEntity attachField = newDoc.createMIMEEntity("attachment");
MIMEHeader attachHeader = attachField.createHeader("content-disposition");
attachHeader.setHeaderVal("attachment;filename=\"" + eoPic.getName() + "\"");
attachField.setContentFromBytes(attachStream, this.getMIMEType(fileType), MIMEEntity.ENC_IDENTITY_BINARY);
- 请注意,我使用的是 OpenNTF API,但如果需要,可以返回到 Lotus 对象。
无论如何 - 这几乎奏效了。我收到了我的文件 - 每个附件 1 个。但是,当进入文档属性中的“附件”字段时,它不是 RichTextField,而是 MIME 的东西。这可能导致我进入项目的下一阶段。 RichTextDocument 可以正常工作,但 MIME 不能。
这是 1 次迁移需求,因此对于我如何最终使用 RichTextFields 的任何想法将不胜感激。谢谢!!
【问题讨论】:
-
嗯,有没有想过使用附加到 RTF 项目的文件下载控件以及在 Xpage 中将 RTF 项目显示为编辑器?注意:所有通过 Xpage 更新/新创建的数据都存储为 MIME,因此在使用带有表单的 Notes 客户端时可能没有向后兼容性。您还可以通过更改表单上 RTF 的属性来转换 RTF,以将数据存储为 MIME 并在客户端中重新保存所有文档 - 不优雅但它有效。我知道这并不能回答将每个附件提取到唯一文档的问题,但也许这会容易得多。
标签: xpages lotus-domino lotusscript