私は現在、ユーザーがExcelファイルを参照してアップロードするオプションを与えられているアプリケーションに取り組んでいますが、参照されているファイルの絶対パスを取得するのにひどく立ち往生しています。場所は何でもかまいません(Windows / Linux)。
import org.apache.myfaces.custom.fileupload.UploadedFile;
-----
-----
private UploadedFile inpFile;
-----
getters and setters
public UploadedFile getInpFile() {
return inpFile;
}
@Override
public void setInpFile(final UploadedFile inpFile) {
this.inpFile = inpFile;
}
UI開発にはjsf2.0を使用し、参照ボタンにはTomahawkライブラリを使用しています。
参照ボタンのサンプルコード
t:inputFileUpload id="file" value="#{sampleInterface.inpFile}"
valueChangeListener="#{sampleInterface.inpFile}" />
アップロードボタンのサンプルコード
<t:commandButton action="#{sampleInterface.readExcelFile}" id="upload" value="upload"></t:commandButton>
ここのロジック
参照ボタン->ユーザーは場所を参照してファイルを選択しますアップロードボタン->アップロードボタンをクリックすると、SampleInterfaceのメソッドreadExcelFileがトリガーされます。
SampleInterface実装ファイル
public void readExcelFile() throws IOException {
System.out.println("File name: " + inpFile.getName());
String prefix = FilenameUtils.getBaseName(inpFile.getName());
String suffix = FilenameUtils.getExtension(inpFile.getName());
...rest of the code
......
}
ファイル名:abc.xls
プレフィックス:abc
接尾辞:xls
参照されているファイルのフルパス(c:.....のように)を取得するのを手伝ってください。この絶対パスはexcelapachepoiクラスに渡され、そこで解析され、内容がArrayListに表示/保存されます。