GWT —文件上传(导入)

GWT 2.8版本出来啦,正在学习的伙伴们可以试试哈!


项目中文件上传(导入)功能是很常见的,那么在GWT项目中,如何实现呢?最近刚刚做了这个功能:

核心代码如下:

import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitHandler;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Dialog;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;


/**
 * 
 * 导入通用类
 * 使用方法:
 * 1,继承此类通过super(...) 传入指定参数
 * 2,实现uploadResult(msg)方法,msg 表示上传过后的响应结果格式根据后台响应数据进行处理即可
 * 
 * @author CFM
 * 
*/ public abstract class ExcelUpload extends Dialog { String title; /** * 实例 * @param title * @param actionURL */ public ExcelUpload(String title,String actionURL) { setWidth(550); setHeight(300); centerInPage(); setIsModal(true); // setShowFooter(true); setShowMinimizeButton(false); //setImage("t_excel", "silk/page_excel.png"); if(null==title||title.equals("")){ setTitle("EXCEL导入"); }else{ setTitle(title); } final IButton uploadbutton = new IButton("导入"); final FileUpload fileUpload = new FileUpload(); final FormPanel formpanel = new FormPanel(); fileUpload.setName("uploadFormElement"); formpanel.setEncoding(FormPanel.ENCODING_MULTIPART); formpanel.setMethod(FormPanel.METHOD_POST); formpanel.setAction(actionURL); formpanel.setWidget(fileUpload); uploadbutton.setIcon("silk/page_go.png"); uploadbutton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent sender) { if (fileUpload.getFilename().length() == 0) { SC.warn("请选择您要导入的文件"); return; } if (!fileUpload.getFilename().contains(".xls")) { SC.warn("文件格式不对(必须是excel文件)"); return; } formpanel.submit(); } }); formpanel.addSubmitHandler(new SubmitHandler() { @Override public void onSubmit(SubmitEvent event) { uploadbutton.setTitle("导入中..."); uploadbutton.disable(); } }); formpanel.addSubmitCompleteHandler(new SubmitCompleteHandler() { public void onSubmitComplete(SubmitCompleteEvent event) { destroy(); uploadResult(event.getResults()); } }); addItem(formpanel); addItem(uploadbutton); } /** * Fired when a file has been submitted successfully. * @param rst */ public abstract void uploadResult(String rst); }


继承使用:


public class ExcelImport extends ExcelUpload {

	public ExcelImport() {
		super("Excel导入","XXX/order/fileupload");
		
	}

	@Override
	public void uploadResult(String rst) {
		SC.say("导入结果:" + rst);
	}
}


调用:

new ExcelImport().show();


是不是很简单啦。。。收工!



你可能感兴趣的:(GWT)