Java - Lotus Notes - 从Item Instance获取附件名称

时间:2014-08-28 07:23:56

标签: java email lotus-notes lotus-domino email-attachments

我有一个lotus.domino.Item实例。

item.getType()返回Item.ATTACHMENT(表示项目代表和附件)

当我System.output item.getValueString()时,它会写出FileName和Content。

这对我来说并不好,因为它想分别提取FileName和Content。检查了API,找不到合适的方法来提取这些。

或者有没有办法拆分item.getValueString()返回的内容以获取FileName和Content?

1 个答案:

答案 0 :(得分:3)

从文档中获取EmbeddedObject类实例:

java.util.Vector embeddedObjects = notesDocument.getEmbeddedObjects();

或来自富文本项目:

java.util.Vector embeddedObjects = richTextItem.getEmbeddedObjects();

EmbeddedObject包含方法:getSource(),用它来获取嵌入对象的附件类型的文件名。

if (embeddedObject.getType() == EmbeddedObject.EMBED_ATTACHMENT) {
    String attachmentFileName = embeddedObject.getSource();
}

要获取文件内容,请使用extractFile()类实例的EmbeddedObject方法。

下面是java代码,演示了如何分离附件(示例来自官方Domino Designer文档):

import lotus.domino.*;
import java.util.Vector;
import java.util.Enumeration;
public class JavaAgent extends AgentBase {
  public void NotesMain() {
    try {
      Session session = getSession();
      AgentContext agentContext = session.getAgentContext();
      // (Your code goes here) 
      Database db = agentContext.getCurrentDatabase();
      DocumentCollection dc = db.getAllDocuments();
      Document doc = dc.getFirstDocument();
      boolean saveFlag = false;
      while (doc != null) {
        RichTextItem body = 
        (RichTextItem)doc.getFirstItem("Body");
        System.out.println(doc.getItemValueString("Subject"));
        Vector v = body.getEmbeddedObjects();
        Enumeration e = v.elements();
        while (e.hasMoreElements()) {
          EmbeddedObject eo = (EmbeddedObject)e.nextElement();
          if (eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) {
            eo.extractFile("c:\\extracts\\" + eo.getSource());
            eo.remove();
            saveFlag = true;
            }
        }
        if (saveFlag) {
          doc.save(true, true);
          saveFlag = false;
          }
        doc = dc.getNextDocument();
      }
    } catch(NotesException e) {
      System.out.println(e.id + " " + e.text);
      e.printStackTrace();
    }
  }
}