Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Bilder aus RichTextItems auslesen
grandmetre:
So, ich hab mal ein wenig rumprobiert bekomme aber leider keine Daten in meine jpeg-datei, die aber trotzdem angelegt wird. Hier der code:
public static void decodeImageString(String imageString){
try{
NotesThread.sinitThread();
Database database = persistence.getOpenDatabase(dbFileName, server, session);
Document doc = database.createDocument();
MIMEEntity entity = doc.createMIMEEntity();
Stream stream = session.createStream();
entity.setContentFromText(stream, "jpeg", MIMEEntity.ENC_BASE64);
stream.writeText(imageString);
stream.close();
Stream imageStream = session.createStream();
entity.getContentAsBytes(imageStream);
FileOutputStream os = new FileOutputStream("C:\\temp\\test\\test.jpg");
os.write(imageStream.read());
os.flush();
os.close();
}
catch (Exception e){
e.printStackTrace();
}
}
Kann mir einer dagen, wo der Fehler liegt?
flaite:
Du musst dir glaub ich - wie Diali gesagt hat - den entsprechenden base-64 encodedeten Bereich aus XML-Repräsentation eines NotesDokuments mit Bild herausparsen und das dann mit der MimeEntity Klasse dekodieren.
grandmetre:
Das ist genau das, was ich in diesem Teil meines codes versuche. Der String "imageString" ist genau dieser Bereich der XML. Das hab ich schon getestet und für Gut befunden. Mein Problem im Moment ist, dass ich nicht weiß, wie die Methoden, die ich benutzt habe, genau zu handhaben sind, da die Doc nicht sehr aussagekräftig ist.
flaite:
Du schliesst vermutlich den stream zu früh.
Die Zeile als letzte im try-block:
--- Code: ---stream.close();
--- Ende Code ---
grandmetre:
Ich habe es hiermit versucht:
try{
NotesThread.sinitThread();
Database database = persistence.getOpenDatabase(dbFileName, server, session);
Document doc = database.createDocument();
MIMEEntity entity = doc.createMIMEEntity();
Stream stream = session.createStream();
entity.setContentFromText(stream, "jpeg", MIMEEntity.ENC_BASE64);
entity.decodeContent();
stream.writeText(imageString);
Stream imageStream = session.createStream();
FileOutputStream os = new FileOutputStream("C:\\temp\\test\\test.jpg");
entity.getContentAsBytes(imageStream);
byte[] c;
while ((c = imageStream.read()).length > 1){
os.write(c);
}
os.flush();
os.close();
stream.close();
}
catch (Exception e){
e.printStackTrace();
}
und habe beim debuggen festgestellt, dass die .read-Methode des imageStreams auch beim ersten lesen schon von der Länge "0" ist. Also muss vorher schon mal was schief gelaufen sein. Auch mit "entity.getReader()" habe ich es versucht. Bin aber auch daran gescheitert, da der Reader null war.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln