Du musst die Bildresource von Server A auf Server B auslesen.
Damit Server A auf Server B zugreifen darf, muss Server A als vertrauenswürdiger Server ins Serverdokument B eingetragen
Optimal wäre hier ein Servlet, es sollte aber auch mit einer XPage ohne allzugroße Performanceeinbußen gehen.
Technisch liest du die Daten über "com.ibm.designer.domino.napi.design.FileAccess.readFileContent" ein und schickst sie zum Browser
Bei Sven Hasselbach hab ich da auf die Schnelle folgendes gefunden:
loadBinaryFile zum Auslesen der Datei:
=> https://github.com/hasselbach/domino-napi-utils/blob/master/src/ch/hasselba/napi/NAPIUtils.java
=> http://hasselba.ch/blog/?p=1763
Schreiben einer Bilddatei in den ServletOutputstream
=> http://hasselba.ch/blog/?p=871
Möglicherweise könnte untenstehendes Beispiel sogar schon funktionieren (habs nicht getestet)
Gruß
Roland
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="true">
<xp:this.afterRenderResponse>
<![CDATA[#{javascript:
importPackage( ch.hasselba.napi );
var exCon = facesContext.getExternalContext();
var response = exCon.getResponse().getDelegate();
var imageStream = NAPIUtils.loadBinaryFile("server","db.nsf","image.jpg")
response.setContentType("image/jpg");
var out= response.getOutputStream();
var buffer = new byte[32 * 1024];
while (true) {
var r = imageStream.read(buffer);
if (r == -1) {
break;
}
out.write(buffer, 0, r);
}
imageStream.close();
}]]>
</xp:this.afterRenderResponse>
</xp:view>
Hallo Roland,
hab's nun mit deinem Hinweis auch mit attachments hinbekommen. Hier der Code in meinem berechneten Feld (innerhalb eines repeat controls):
var doc:NotesDocument = document1.getDocument() ;
if( doc.hasItem("$File"))
{
var uid:String = doc.getUniversalID() ;
var protocol:String = context.getUrl().getScheme() ;
var host:String = context.getUrl().getHost() ;
var currentDb:String = database.getFilePath() ;
var sourceDb:NotesDatabase = doc.getParentDatabase() ;
var nn:NotesName = session.createName( sourceDb.getServer() ) ;
var strSourceDb:String = nn.getCommon() + "!!" + sourceDb.getFilePath() ;
var bildUrl:String = protocol + "://" + host + "/" + currentDb + "/xsp/.ibmmodres/domino/OpenAttachment/" + strSourceDb + "/" + uid + "/$file/ContactPhoto" ;
return "<img src=\"" + bildUrl + "\" />"
}
else
{
return "" ;
}
Der Name der Bilddateien lautet für alle Dokumente "ContactPhoto".
Die Angabe der Notesdomain ist nicht erforderlich (obwohl unterschiedlich). Ich denke, dass sich lediglich die Server vertrauen müssen.
Nochmals herzlichen Dank für deine Bemühungen!
Gruß
Hubert