모든 첨부 파일을 먼저 제거한 다음 (NotesXSPDocument 개체에서 removeAllAttachments 함수를 사용하여) 업로드 된 파일을 richtext 항목에 수동으로 첨부하여이 작업을 수행 할 수 있습니다.
이 SSJS의 코드가 XPage의 beforeRenderResponse 이벤트에 추가 할 수있다
/사용자 지정 컨트롤 : 파일이 저장되어있는
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();
서식있는 텍스트 항목이 "몸"입니다, 데이터 소스의 이름은 "문서 1입니다 ". FileUpload 컨트롤은 "fileUpload1"입니다.
는 두 가지 제한이 있습니다
당신은 저장 버튼이 사용할 수 없습니다
- , 당신은
- (세르 다르 Basegmez 위에 쓴 참조) 완전 새로 고침을 만드는 일반 버튼/링크를 사용할 필요가 당신 다시 업로드 한 후에 페이지를 새로 고쳐야합니다. 그렇지 않으면 파일 다운로드 콘트롤에서 업로드 된 파일을 볼 수 없습니다 (아마도이 컨트롤의 부분 새로 고침이 작동 할 수 있습니다).
편집 :
죄송합니다, 내 잘못 : 문서를 저장하는 제출 버튼이 코드 위의 당신은 수 사용. 그렇다면 페이지를 수동으로 새로 고치지 마십시오! 누군가가 내가 Google을 통해했던 것처럼 여기 도착 조금 늦었지만 경우
: 당신은 저장 버튼이 SSJS 코드를 추가 할 수있는 문서에 이미 파일 제거하려면 ("파일"을 가정하는 것은하여 서식있는 텍스트 항목 채의 이름 파일입니다) 그 단계에서 새 파일을 첨부했기 때문에 작동합니다. 그래서 내가 추측 한 마지막 첨부 파일도 삭제합니다 (삭제하기 전에 첨부 파일 이름을 테스트 해 볼 수 있습니다). –