gpt4 book ai didi

java - 转换数据库中的嵌入图片

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:31 24 4
gpt4 key购买 nike

我有一个“小”问题。在数据库文档中包含一个 richtextfield。富文本字段包含某个联系人的个人资料图片。问题是这个内容没有保存为 mime,因此我无法计算图像的 url。

我正在使用 pojo 从个人资料中检索数据,并在我的 xpage 控件中使用它来显示其内容。我需要构建一个转换代理,它获取 richtextitem 的内容并将其转换为 mime 以便能够计算 url 之类的东西

http://host/database.nsf/($users)/D40FE4181F2B86CCC12579AB0047BD22/Photo/M2?OpenElement

有人可以帮我将 richtextitem 的内容转换为 mime 吗?当我检查 rt 字段中的嵌入对象时,没有。当我将字段的内容作为流获取并使用以下代码将其保存到新的富文本字段时。但是新领域并不是以某种方式创建的。

System.out.println("check if document contains a field with name "+fieldName);
if(!doc.hasItem(fieldName)){
throw new PictureConvertException("Could not locate richtextitem with name"+fieldName);
}


RichTextItem pictureField = (RichTextItem) doc.getFirstItem(fieldName);

System.out.println("Its a richtextfield..");
System.out.println("Copy field to backup field");

if(doc.hasItem("old_"+fieldName)){

doc.removeItem("old_"+fieldName);

}


pictureField.copyItemToDocument(doc, "old_"+fieldName);

// Vector embeddedPictures = pictureField.getEmbeddedObjects();
// System.out.println(doc.hasEmbedded());
// System.out.println("Retrieved embedded objects");
// if(embeddedPictures.isEmpty()){
// throw new PictureConvertException("No embedded objects could be found.");
// }
//


// EmbeddedObject photo = (EmbeddedObject) embeddedPictures.get(0);
System.out.println("Create inputstream");

//s.setConvertMime(false);
InputStream iStream = pictureField.getInputStream();
System.out.println("Create notesstream");
Stream nStream = s.createStream();
nStream.setContents(iStream);

System.out.println("Create mime entity");

MIMEEntity mEntity = doc.createMIMEEntity("PictureTest");
MIMEHeader cdheader = mEntity.createHeader("Content-Disposition");
System.out.println("Set header withfilename picture.gif");

cdheader.setHeaderVal("attachment;filename=picture.gif");
System.out.println("Setcontent type header");
MIMEHeader cidheader = mEntity.createHeader("Content-ID");
cidheader.setHeaderVal("picture.gif");
System.out.println("Set content from stream");
mEntity.setContentFromBytes(nStream, "application/gif", mEntity.ENC_IDENTITY_BINARY);
System.out.println("Save document..");

doc.save();
//s.setConvertMime(true);


System.out.println("Done");

// Clean up if we are done..

//doc.removeItem(fieldName);

最佳答案

现在已经有一段时间了,我没有继续将现有数据转换为 mime 的路线。我无法让它工作,经过更多研究后,它似乎是不必要的。因为问题是关于显示绑定(bind)到 richtextbox 的图像,所以我对如何计算图像的 url 进行了一些研究,并提出了以下代码行:

function getImageURL(doc:NotesDocument, strRTItem,strFileType){
if(doc!=null && !"".equals(strRTItem)){
var rtItem = doc.getFirstItem(strRTItem);
if(rtItem!=null){
var personelDB = doc.getParentDatabase();
var dbURL = getDBUrl(personelDB);
var imageURL:java.lang.StringBuffer = new java.lang.StringBuffer(dbURL);

if("file".equals(strFileType)){
var embeddedObjects:java.util.Vector = rtItem.getEmbeddedObjects();
if(!embeddedObjects.isEmpty()){
var file:NotesEmbeddedObject = embeddedObjects.get(0);

imageURL.append("(lookupView)\\");
imageURL.append(doc.getUniversalID());
imageURL.append("\\$File\\");
imageURL.append(file.getName());
imageURL.append("?Open");

}
}else{
imageURL.append(doc.getUniversalID());
imageURL.append("/"+strRTItem+"/");
if(rtItem instanceof lotus.domino.local.RichTextItem){
imageURL.append("0.C4?OpenElement");
}else{
imageURL.append("M2?OpenElement");
}
}
return imageURL.toString()
}
}
}

它将检查给定的 RT 字段是否存在。如果是这种情况,它会假设一些事情:

  • 如果rtfield中有文件,第一个文件就是要显示的图片
  • 否则,如果项目是 Rt 类型,它将创建一个指定的 url,否则它将假定它是一个 mime 实体并生成另一个 url。

关于java - 转换数据库中的嵌入图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com