转换数据库中嵌入的图片

2024-01-09

我有一个“小”问题。在数据库文档中包含富文本字段。富文本字段包含某个联系人的个人资料图片。问题是这个内容没有保存为 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);

已经有一段时间了,我没有沿着将现有数据转换为哑剧的路线。我无法让它发挥作用,经过更多研究后,它似乎没有必要。因为问题是关于显示绑定到 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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转换数据库中嵌入的图片 的相关文章

  • 谁能解释一下 servlet 映射吗?

    我正在尝试使用 SpringMVC 编写一个 Web 应用程序 通常我只是将一些虚构的文件扩展名映射到 Spring 的前端控制器并快乐地生活 但这次我要使用类似 REST 的 URL 没有文件扩展名 将我的上下文路径下的所有内容映射到前端
  • 匿名内部类显示不正确的修饰符

    据我了解 以下代码应该打印true作为输出 但是 当我运行这段代码时 它正在打印false 来自 Java 文档15 9 5 匿名类 https docs oracle com javase specs jls se8 html jls 1
  • 无法从 TemporalAccessor 获取 OffsetDateTime

    当我这样做时 String datum 20130419233512 DateTimeFormatter formatter DateTimeFormatter ofPattern yyyyMMddHHmmss withZone ZoneI
  • 如何检查字符串是否具有特定模式[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 用户输入任意字符串 程序会区分该字符
  • 从继承的受保护 Java 字段创建公共访问器

    我怎样才能完成以下工作 class Foo extends javax swing undo UndoManager increase visibility works for method override def editToBeUnd
  • Java 中的本机方法

    我花了一些时间学习什么是 Java Native 方法以及它们是在平台相关代码 主要是 C 中实现的 但是我在哪里可以找到这些 Java 的本机实现呢 例如 Thread 类的 sleep long millis 方法是本机的 但它的实现代
  • 为什么 MetaSpace 大小是已用 MetaSpace 的两倍?

    我写了一个程序来模拟MetaSpace OOM 但我发现MetaSpace Size几乎总是两倍大Used MetaSpace Why 我用标志运行我的程序 XX MaxMetaspaceSize 50m 程序抛出OOM时Used Meta
  • 文件保存在文件系统中 VS 保存在数据库中

    我正在设计一个 servlet 或 Struts2 中的操作 用于文件 图像 文档等 下载 但我想知道哪种更好的方法可以将文件保留在文件系统和数据库中 只需保留文件的路径或将文件保留在数据库中 如 BLOB 我知道当我查询数据库时 哪里的
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • 在 javafx 中注册鼠标处理程序,但处理程序不是内联的

    我有一个 JavaFX 应用程序变得有点大 我想保持代码的可读性 我有一个折线图 我希望内置缩放功能 该功能在单击鼠标时发生 我知道我需要向图表注册鼠标侦听器 我无法从 Oracle 示例中弄清楚什么 即如下所示 http docs ora
  • kafka Avro 多个主题的消息反序列化器

    我正在尝试以 avro 格式反序列化 kafka 消息 我使用以下代码 https github com ivangfr springboot kafka debezium ksql blob master kafka research c
  • 将传入字符串的 unicode 表示形式转换为 UTF-8?

    我正在读取一些已经转换为 html 样式 代码的数据 我现在需要将其转换回 UTF 8 字符以供查看 不幸的是我无法使用浏览器查看该字符串 我读过有关 java 中的转换的内容 似乎如果你有一个 uxxxx 字符串 那么编译器会为你转换 然
  • 在 Java 中打开现有文件并关闭它。

    是否可以在java中打开一个文件附加数据并关闭多次 例如 psuedocode class variable declaration FileWriter writer1 new FileWriter filename fn1 writer
  • 页面加载时显示扩展库对话框?

    有没有办法在我的页面加载时显示扩展页面对话框 Add a
  • Android - 保持用户登录状态

    我正在尝试使用 PHP 和 MySQLi for Android 进行登录 我不明白的是如何保持用户登录状态 我看到一个简单的教程 其中有人使用 SQLite 来保护信息 但我不知道这是否真的安全 如何保存用户信息以保持用户登录状态 谢谢
  • WebSocketStompClient 将无法连接到 SockJS 端点

    我正在尝试新的 从版本 4 2 开始 java STOMP 客户端支持 我的出发点是入门指南 使用 WebSocket 构建交互式 Web 应用程序 http spring io guides gs messaging stomp webs
  • 在 Java 服务器中验证 Windows 用户

    我正在开发一个用 Java 编写的服务器和一个在同一网络上的 Windows 计算机上运行的客户端 用 Net 编写的桌面应用程序 我希望进行一些基本身份验证 以便服务器可以确定运行客户端的用户的用户名 而不需要用户在客户端中重新输入其 W
  • Android应用程序中的模式输入

    我想知道是否有其他替代方案可以替代 Android 上平庸的 EditText 密码输入 是否有 API 或开源代码可以集成到我的应用程序中 类似于锁屏图案解锁 Intent 可能会返回哈希值 数字 字符串或代表用户输入的模式的任何内容 我
  • RecyclerView 适配器的 Kotlin 泛型

    我正在尝试编写一个通用的 recyclerview 适配器 我找到了几个例子 然而 仍然无法弄清楚如何实现通用适配器 我写的代码是 open abstract class BaseAdapter
  • javafx中的stackpane和root有什么区别?

    我正在练习javafx做饼图 以下是开发饼图的代码 如果我这样做Group并与StackPane 我发现输出没有区别 我已经评论了组部分 只是徘徊两者之间的区别 import javafx application Application i

随机推荐