これを行うには、最初にすべての添付ファイルを削除し (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」です。
次の 2 つの制限があります。
- これを保存ボタンで使用することはできません。完全に更新する通常のボタン/リンクを使用する必要があります(Serdar Basegmezが上で書いたものを参照してください)
- アップロード後にもう一度ページを更新する必要があります。そうしないと、アップロードされたファイルがファイル ダウンロード コントロールに表示されません (このコントロールの部分的な更新が機能する可能性があります)。
編集:
申し訳ありませんが、私のせいです。ドキュメントを保存する送信ボタンで上記のコードを使用できます。その後、ページを手動で更新する必要はありません!