Файлы хранятся как вложения. Достать без клиента Notes можно:
1) HTTP (если поднят web сервер и разрешен доступ через web к базе а по дефолту так и есть). Нужно знать а) UNID документа б) имя вложения.
тогда URL такой http(s)://yourServer/path/to/database.nsf/0/<UNID>/$FILE/<nameOfAttachmentFile>
минусы - надо знать UNIDы документов и наименования файлов вложений. Есть правда еще варианты сделать собственные представлния с еменами вложений и отдачей этих вьюх в виде JSON или XML, но если с лотусом туго, то они не стоят упоминания.
2) Java + DIIOP (CORBA в Lotus так называется)
для этого нужно
а) поднять на сервере DIIOP (load diiop на консоли сервера, по умолчанию не поднят)
б) взять ncso.jar из клиента или сервера (%PathToNotes%/data/domino/java/ncso.jar например)
ц) запустить что-то типа этого (модифицированный пример из хелпы):
import lotus.notes.*; //для этого нужен ncso.jar
import java.util.Vector;
import java.util.Enumeration;
public class SuperFileExtractor {
public void static void main(String argv[]) {
try {
Session session = NotesFactory.createSession("serverName","userName","password");
Database db = session.getDatabase("serverName","Path/to/yourDatabase.nsf");
DocumentCollection dc = db.getAllDocuments();
Document doc = dc.getFirstDocument();
while (doc != null) {
// вариант 1 - выбрать все вложения из RTF поля BODY (может и по другому называться)
RichTextItem body = (RichTextItem)doc.getFirstItem("Body");
Vector v = body.getEmbeddedObjects();
Enumeration e = v.elements();
while (e.hasMoreElements()) {
EmbeddedObject eo = (EmbeddedObject)e.nextElement();
if (eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) {
eo.extractFile("path/To/Extaction/Dir/" + eo.getSource());
}
}
//END OF вариант 1
//вариант 2 - выбрать вложение по имени (Аttachment.doc например)
EmbeddedObject eo = doc.getAttachment("Attachment.doc");
if(oe != null){
eo.extractFile("/path/To/Extraction/Dir/" + oe.getSource());
}
// END OF вариант 2
doc = dc.getNextDocument();
}
} catch(NotesException e) {
System.out.println(e.id + " " + e.text);
e.printStackTrace();
}
}
}
//Ссылка на оригинал
1) HTTP (если поднят web сервер и разрешен доступ через web к базе а по дефолту так и есть). Нужно знать а) UNID документа б) имя вложения.
тогда URL такой http(s)://yourServer/path/to/database.nsf/0/<UNID>/$FILE/<nameOfAttachmentFile>
минусы - надо знать UNIDы документов и наименования файлов вложений. Есть правда еще варианты сделать собственные представлния с еменами вложений и отдачей этих вьюх в виде JSON или XML, но если с лотусом туго, то они не стоят упоминания.
2) Java + DIIOP (CORBA в Lotus так называется)
для этого нужно
а) поднять на сервере DIIOP (load diiop на консоли сервера, по умолчанию не поднят)
б) взять ncso.jar из клиента или сервера (%PathToNotes%/data/domino/java/ncso.jar например)
ц) запустить что-то типа этого (модифицированный пример из хелпы):
import lotus.notes.*; //для этого нужен ncso.jar
import java.util.Vector;
import java.util.Enumeration;
public class SuperFileExtractor {
public void static void main(String argv[]) {
try {
Session session = NotesFactory.createSession("serverName","userName","password");
Database db = session.getDatabase("serverName","Path/to/yourDatabase.nsf");
DocumentCollection dc = db.getAllDocuments();
Document doc = dc.getFirstDocument();
while (doc != null) {
// вариант 1 - выбрать все вложения из RTF поля BODY (может и по другому называться)
RichTextItem body = (RichTextItem)doc.getFirstItem("Body");
Vector v = body.getEmbeddedObjects();
Enumeration e = v.elements();
while (e.hasMoreElements()) {
EmbeddedObject eo = (EmbeddedObject)e.nextElement();
if (eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) {
eo.extractFile("path/To/Extaction/Dir/" + eo.getSource());
}
}
//END OF вариант 1
//вариант 2 - выбрать вложение по имени (Аttachment.doc например)
EmbeddedObject eo = doc.getAttachment("Attachment.doc");
if(oe != null){
eo.extractFile("/path/To/Extraction/Dir/" + oe.getSource());
}
// END OF вариант 2
doc = dc.getNextDocument();
}
} catch(NotesException e) {
System.out.println(e.id + " " + e.text);
e.printStackTrace();
}
}
}
//Ссылка на оригинал