6
今日私はPrimeFaces FileUploadに問題があります。それは素晴らしいですが、ファイルはJBossの一時ディレクトリに保存されていますので、アプリケーションを再デプロイするか、ソースをsvnにコミットするだけで、アップロードしたすべての画像はなくなります。そこで私は、戦争プロジェクトの「ソース」ディレクトリに画像を保存する方法があるかどうかを質問したかったのです。j2ee primefaces fileuploadファイル保存先
マイhandleFileUpload方法:
public String getUrlBase() {
return FacesContext.getCurrentInstance().getExternalContext().getRealPath("//upload");
}
public void handleFileUpload(FileUploadEvent event) {
new File(getUrlBase() + "/" + album.getId()).mkdirs();
File result = new File(getUrlBase() + "/" + album.getId() + "/" + event.getFile().getFileName());
try {
FileOutputStream fileOutputStream = new FileOutputStream(result);
byte[] buffer = new byte[BUFFER_SIZE];
int bulk;
InputStream inputStream = event.getFile().getInputstream();
while (true) {
bulk = inputStream.read(buffer);
if (bulk < 0) {
break;
}
fileOutputStream.write(buffer, 0, bulk);
fileOutputStream.flush();
}
fileOutputStream.close();
inputStream.close();
FacesMessage msg = new FacesMessage("Succesful",
event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
} catch (IOException e) {
e.printStackTrace();
FacesMessage error = new FacesMessage("The files were not uploaded!");
FacesContext.getCurrentInstance().addMessage(null, error);
}
}
EDIT:別の問題
私のビューファイル:
<h:form enctype="multipart/form-data" prependId="false">
<p:growl id="messages" showSummary="true" showDetail="true" />
<p:fileUpload fileUploadListener="#{photo.handleFileUpload}"
update="messages" sizeLimit="1073741824"
multiple="true" label="choose" allowTypes="*.jpg;*.png;*.gif;"
description="Images" />
</h:form>
私はファイルアップロードに更新= "メッセージ" を追加すると、私は
取得javax.servlet.ServletException: null source
私がfileUploadでページを開くときはいつでも。あなたはそれを取り除く方法を知らないのですか?
使用ガイドによれば、これは一時ファイルが保存される場所です。いくつかの画像をアップロードしてからフォトギャラリーに表示する必要があります。そのため、Webルートの "upload"ディレクトリ(WEB-INFディレクトリなど)に保存したいと思います。だから私がsvnにソースをコミットすると、他の人もギャラリーに写真を持っています。 アップロード用の設定を/ uploadに設定しようとしましたが、うまくいかないようです。 –
アップロードした画像をソースフォルダに保存しないでください。決して(あなたはPHPの背景から来ていますか?)それらをディスクのどこかに保管しておきます。他の開発者と共有したい場合はデータベースに保管してください(小さなファイルの場合は良い選択です)。 –