这可以通过首先删除所有附件(使用 NotesXSPDocument 对象中的 removeAllAttachments 函数)然后手动将上传的文件附加到富文本项来完成。
必须将此 SSJS 代码添加到 XPage / 自定义控件的 beforeRenderResponse-event 中:
var con = facesContext.getExternalContext();
var request:com.sun.faces.context.MyHttpServletRequestWrapper = con.getRequest();
var map:java.util.Map = request.getParameterMap();
var fileDataName = getClientId('fileUpload1') ;
var fileData:com.ibm.xsp.http.UploadedFile = map.get( fileDataName );
if( fileData == null ){
return;
}
var tempFile:java.io.File = fileData.getServerFile();
var correctedFile = new java.io.File( tempFile.getParentFile().getAbsolutePath() +
java.io.File.separator + fileData.getClientFileName() );
var success = tempFile.renameTo(correctedFile);
try{
document1.removeAllAttachments("Body");
}catch(e){}
var rtFiles:NotesRichTextItem = null;
if(!(document1.getDocument().hasItem("Body"))){
rtFiles = document1.getDocument().createRichTextItem("Body")
}else{
rtFiles = document1.getDocument().getFirstItem("Body");
}
rtFiles.embedObject(lotus.domino.local.EmbeddedObject.EMBED_ATTACHMENT, "",
correctedFile.getAbsolutePath(), null);
correctedFile.renameTo(tempFile);
document1.save();
存储文件的富文本项目是“Body”,数据源的名称是“document1”。Fileupload 控件是“fileUpload1”。
有两个限制:
- 您不能将其与保存按钮一起使用,您必须使用普通按钮/链接来进行完全刷新(请参阅 Serdar Basegmez 上面写的内容)
- 您必须在再次上传后刷新页面,否则您将不会在文件下载控件中看到上传的文件(可能对此控件进行部分刷新可能会起作用)。
编辑:
对不起,我的错:您可以在保存文档的提交按钮中使用上面的代码。那你就不用手动刷新页面了!