fileNameHrefValue属性を上書きし、ファイル アクセスをログに記録するダウンロード XPage にユーザーをリダイレクトすると、ファイルのダウンロードを追跡できます。
<xp:fileDownload
rows="30"
id="fileDownload1"
displayLastModified="false"
value="#{document1.Body}"
allowDelete="true">
<xp:this.fileNameHrefValue>
<![CDATA[#{javascript:
var fName = this.getFileId();
var docUNID = document1.getDocument().getUniversalID();
var path = "http://www.example.com/yourdb.nsf/download.xsp";
path + "?documentId=" + docUNID + "&fileName=" + fName & "&fieldName=Body";
}]]>
</xp:this.fileNameHrefValue>
</xp:fileDownload>
生成された URLのパラメーターfieldNameは、fileDownloadComponent がバインドされているフィールドと一致する必要があります。
download.xspは、別のリダイレクトを実行するだけです。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="documentFile"></xp:dominoDocument>
<xp:dominoDocument
var="documentLog"
ignoreRequestParams="true">
</xp:dominoDocument>
</xp:this.data>
<xp:this.beforeRenderResponse>
<![CDATA[#{javascript:
var dbPath = documentFile.getParentDatabase().getFilePath();
var url = "http://www.example.com/";
url += dbPath;
url += "/xsp/.ibmmodres/domino/OpenAttachment/";
url += dbPath + "/";
url += documentFile.getDocument().getUniversalID();
url += "/" + param.get("fieldName") + "/";
url += param.get("fileName");
facesContext.getExternalContext().redirect( url );
facesContext.responseComplete();
documentLog.setValue("User", session.getUserName() );
documentLog.setValue("FileName", param.get("fileName") );
documentLog.save();
}]]>
</xp:this.beforeRenderResponse>
</xp:view>
編集:
ここでは、filedownload コントロールの削除機能を操作する方法を見つけることができます。
ファイル ダウンロード コントロールで添付ファイルを削除した後にドキュメントを自動保存しますか?