com.ibm.xsp.component.UIFileuploadEx.UploadedFileクラスを使用して、Bean にゲッターとセッターを作成する必要があります。
private UploadedFile uploadedFile;
public UploadedFile getFileUpload() {
return uploadedFile;
}
public void setFileUpload( UploadedFile to ) {
this.uploadedFile = to;
}
Bean データを処理する関数 (保存関数など) では、オブジェクトが null かどうかを確認することで、ファイルがアップロードされたかどうかを確認できます。null でない場合は、ファイルがアップロードされています。
アップロードされたファイルを処理するには、まずgetServerFile() メソッドを使用してcom.ibm.xsp.http.IUploadedFileオブジェクトのインスタンスを取得します。そのオブジェクトには、アップロードされたファイルの File オブジェクトを返す getServerFile() メソッドがあります。そのオブジェクトの問題は、暗号的な名前が付いていることです (おそらく、複数の人が同時に同じ名前のファイルをアップロードすることに対処するためです)。元のファイル名は、IUploadedFile クラスのgetClientFileName()メソッドを使用して取得できます。
次に、暗号化されたファイルの名前を元のファイル名に変更し、処理して (リッチ テキスト フィールドに埋め込むか、別の処理を行います)、元の (暗号化された) 名前に戻します。この最後の手順は、コードが終了した後にファイルがクリーンアップ (削除) されるため、重要です。
上記の手順のサンプル コードは次のとおりです。
import java.io.File;
import com.ibm.xsp.component.UIFileuploadEx.UploadedFile;
import com.ibm.xsp.http.IUploadedFile;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.RichTextItem;
import com.ibm.xsp.extlib.util.ExtLibUtil; //only used here to get the current db
public void saveMyBean() {
if (uploadedFile != null ) {
//get the uploaded file
IUploadedFile iUploadedFile = uploadedFile.getUploadedFile();
//get the server file (with a cryptic filename)
File serverFile = iUploadedFile.getServerFile();
//get the original filename
String fileName = iUploadedFile.getClientFileName();
File correctedFile = new File( serverFile.getParentFile().getAbsolutePath() + File.separator + fileName );
//rename the file to its original name
boolean success = serverFile.renameTo(correctedFile);
if (success) {
//do whatever you want here with correctedFile
//example of how to embed it in a document:
Database dbCurrent = ExtLibUtil.getCurrentDatabase();
Document doc = dbCurrent.createDocument();
RichTextItem rtFiles = doc.createRichTextItem("files");
rtFiles.embedObject(lotus.domino.EmbeddedObject.EMBED_ATTACHMENT, "", correctedFile.getAbsolutePath(), null);
doc.save();
rtFiles.recycle();
doc.recycle();
//if we're done: rename it back to the original filename, so it gets cleaned up by the server
correctedFile.renameTo( iUploadedFile.getServerFile() );
}
}
}