Wicketファイルのアップロードの例
WicketFileUploadFieldコンポーネントを作成して、ユーザーがローカルドライブからファイルを選択し、サーバーにアップロードできるようにする方法を示す例。
//Java
import org.apache.wicket.markup.html.form.upload.FileUploadField;
form.setMultiPart(true);
form.add(fileUpload = new FileUploadField("fileUpload"));
//HTML
ファイルをアップロードするには、Wicketフォームコンポーネントで「multipart mode」を有効にする必要があります。
1. FileUploadの例
fileuploadコンポーネントをレンダリングし、uploaded file size to 10kを制限する例。 そして、新しくアップロードされたファイルは、事前定義された場所に保存されます。
package com.example.user;
import java.io.File;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.util.lang.Bytes;
public class FileUploadPage extends WebPage {
private FileUploadField fileUpload;
private String UPLOAD_FOLDER = "C:\\";
public FileUploadPage(final PageParameters parameters) {
add(new FeedbackPanel("feedback"));
Form> form = new Form("form") {
@Override
protected void onSubmit() {
final FileUpload uploadedFile = fileUpload.getFileUpload();
if (uploadedFile != null) {
// write to a new file
File newFile = new File(UPLOAD_FOLDER
+ uploadedFile.getClientFileName());
if (newFile.exists()) {
newFile.delete();
}
try {
newFile.createNewFile();
uploadedFile.writeTo(newFile);
info("saved file: " + uploadedFile.getClientFileName());
} catch (Exception e) {
throw new IllegalStateException("Error");
}
}
}
};
// Enable multipart mode (need for uploads file)
form.setMultiPart(true);
// max upload size, 10k
form.setMaxSize(Bytes.kilobytes(10));
form.add(fileUpload = new FileUploadField("fileUpload"));
add(form);
}
}
2. HTMLページ
HTML入力タグを介してコンポーネントをレンダリングします。
Wicket file upload example
3. Demo
ファイルサイズが10kを超える場合、表示エラー

すべて問題ありません。保存されたファイル名を表示します。

ダウンロード–Wicket-FileUpload-Example.zip(7KB)