XPages多文件上传仅保存最后一个文件问题咨询
解决XPages多文件上传仅保存最后一个文件的问题
你遇到的核心问题是:仅添加multiple属性只是让浏览器支持多选文件,但XPages原生的xp:fileUpload绑定单个富文本字段时,默认只会将最后一个选中的文件写入字段——它没有自动处理多文件批量保存的逻辑。
修复步骤(原生代码实现)
调整文件上传控件的绑定
去掉xp:fileUpload的value绑定,避免系统自动覆盖字段内容:<xp:fileUpload id="fileUpload2"> <xp:this.attrs> <xp:attr name="multiple" value="true" /> </xp:this.attrs> </xp:fileUpload>在保存按钮中添加服务器端处理逻辑
通过遍历上传的文件集合,逐个将文件追加到富文本字段中:// 获取所有上传的文件 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
相关产品推荐
相关产品推荐

