该示例向您展示如何创建Wicket FileUploadField组件,以使用户从本地驱动器中选择一个文件并上传到服务器。
//Java
import org.apache.wicket.markup.html.form.upload.FileUploadField;
form.setMultiPart(true);
form.add(fileUpload = new FileUploadField("fileUpload"));
//HTML
<input wicket:id="fileUpload" type="file"/>
要上传文件,您必须在Wicket表单组件中启用“ multipart mode ”。
1. FileUpload示例
呈现文件上传组件并将上传文件的大小限制为10k的示例。 并且新上传的文件将保存到预定义的位置。
package com.mkyong.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<Void>("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输入标签渲染组件。
<html>
<head>
<style>
.feedbackPanelINFO {
color: green;
}
.feedbackPanelERROR {
color: red;
}
</style>
</head>
<body>
<h1>Wicket file upload example</h1>
<div wicket:id="feedback"></div>
<form wicket:id="form">
<p>
<label>Select file :</label>
<input wicket:id="fileUpload" size="40" type="file"/>
<input type="submit" value="Upload"/>
</p>
</form>
</body>
</html>
3.演示
开始并访问-http:// localhost:8080 / WicketExamples /
如果文件大小超过10k,则显示错误
一切正常,显示保存的文件名。
下载它– Wicket-FileUpload-Example.zip (7KB)