You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XPages多文件上传仅保存最后一个文件问题咨询

解决XPages多文件上传仅保存最后一个文件的问题

你遇到的核心问题是:仅添加multiple属性只是让浏览器支持多选文件,但XPages原生的xp:fileUpload绑定单个富文本字段时,默认只会将最后一个选中的文件写入字段——它没有自动处理多文件批量保存的逻辑。

修复步骤(原生代码实现)

  1. 调整文件上传控件的绑定
    去掉xp:fileUpload的value绑定,避免系统自动覆盖字段内容:

    <xp:fileUpload id="fileUpload2">
        <xp:this.attrs>
            <xp:attr name="multiple" value="true" />
        </xp:this.attrs>
    </xp:fileUpload>
    
  2. 在保存按钮中添加服务器端处理逻辑
    通过遍历上传的文件集合,逐个将文件追加到富文本字段中:

    // 获取所有上传的文件
    var uploadedFiles = context.getUploadedFiles();
    if (uploadedFiles != null && uploadedFiles.length > 0) {
        // 获取或创建富文本项
        var rtItem = document1.getFirstItem("rtWeb");
        if (!rtItem) {
            rtItem = document1.createRichTextItem("rtWeb");
        }
        // 循环处理每个文件
        for (var i = 0; i < uploadedFiles.length; i++) {
            var file = uploadedFiles[i];
            // 将文件嵌入富文本字段
            rtItem.embedObject(lotus.domino.EmbeddedObject.EMBED_ATTACHMENT, "", file.getServerFileName(), null);
            // 释放资源,避免内存泄漏
            file.recycle();
        }
        // 保存文档
        document1.save();
    }
    

注意事项

  • 编辑已有文档时,原有富文本字段中的附件会被保留,新上传的文件会追加进去
  • 处理完文件后必须调用file.recycle()释放Domino对象资源
  • 新建文档场景下,需确保文档对象在执行保存逻辑前已完成初始化

内容的提问来源于stack exchange,提问作者Detlef Birkholz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:02:11