客戶端:
class FileUploadForm extends FormPanel{
private FileUpload fileUpload;
public FileUploadForm(){
setEncoding(FormPanel.ENCODING_MULTIPART);
setMethod(FormPanel.METHOD_POST);
VerticalPanel holder = new VerticalPanel();
fileUpload = new FileUpload();
fileUpload.setName("file");
fileUpload.setWidth(300);
holder.add(fileUpload);
}
public String getFileName(){
return fileUpload.getFilename();
}
}
上面的代碼是構造一個簡單的文件上傳的Panel。
使用FileUploadForm:
(1):設置Action:fileUploadForm.setAction(String url);//
(2):上傳前的事件:fileUploadForm.addSubmitHandler(SubmitHandler handler);//
(3):上傳完成事件:fileUploadForm.addSubmitCompleteHandler(SubmitCompleteHandler handler);//
如果服務器端用諸如out.print寫入數據返回到客戶端,在SubmitCompleteHandler裏可以用如下方式獲得。
//獲取輸出流裏的數據
String result = event.getResults();
HTML html = new HTML(result);
result = html.getText();
(4):執行上傳操作:fileUploadForm.submit();
服務端:
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter= upload.getItemIterator(req);
while(iter.hasNext()){
FileItemStream item = iter.next();
InputStream in = item.openStream();//打開上傳的文件流
}