我有一个简单的表单和正文字段。当用户上传附件时,我希望删除文档正文字段中已有的任何附件。如何在我的保存按钮中执行此操作。
我曾尝试将fileUpload控件上的属性设置为始终将文件名更改为相同的名称,但这并不会替换该文件,而是会添加一个新文件并为其添加一个新的序列号
<xp:fileUpload id="fileUpload1" value="#{userdoc.Body}" filename="profile" seUploadname="false"></xp:fileUpload>我还尝试在保存之前循环body字段中的所有嵌入附件,然后删除所有附件,但不添加我的新附件。
发布于 2012-08-14 03:32:52
有点晚了,但如果有人像我通过谷歌来的话...
还有另一种选择: NotesXSPDocument.getAttachmentList("rtitem")返回文档中的附件列表。每个条目都是DominoDocument.AttachmentValueHolder类型,它有一个getState()属性,该属性返回文档中已经存在或刚刚添加的文件。要删除文档中已经存在的文件,可以将此SSJS代码添加到保存按钮(假设"files“是保存文件的富文本项的名称):
var attList = docFile.getAttachmentList("files");
for(var i=0; i<attList.size(); i++) {
var att = attList.get(i);
if (att.getState()==0) { //STATE_INDOCUMENT: this is the 'old' file: remove it
docFile.removeAttachment("files", att.getName() );
} else if (att.getState()==1) { //STATE_ADDED: this is the new file
//leave it
}
}发布于 2012-03-29 21:41:13
这可以通过首先删除所有附件(使用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“。
有两个限制:
编辑:
对不起,是我的错:你可以在保存文档的按钮中使用上面的代码。然后,你就不必手动刷新页面了!‘t!
https://stackoverflow.com/questions/9925666
复制相似问题