GWT —文件上传(导入)

原创 2016年08月31日 16:13:16

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;


/**
 * <pre>
 * 导入通用类
 * 使用方法:
 * 1,继承此类通过super(...) 传入指定参数
 * 2,实现uploadResult(msg)方法,msg 表示上传过后的响应结果格式根据后台响应数据进行处理即可
 * 
 * @author CFM
 * </pre>
 */
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 实现文件上传和下载

上星期老师叫我学写一个fileupload 和 download ,琢磨了很久~~ 代码网上很多,关键跑出来有效果 是很纠结人的。。整理一下吧。upload:(推荐一本书 《Google Web To...

GWT实现文件上传下载

主要采用的两个包gwtextux.jar(0.4版本)和commons-fileupload-1.2.1.jar来完成。 在gwt.xml里添加此内容 如你所见,相关JS(在gwtextux.ja...

文件上传1————>struts2

实现原理 Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器...

文件上传与下载————>struts

下载时设置前台的响应类型:response.setContentType("application/x-download"); os = response.getOutputStream(); i...

web安全————文件上传漏洞

文件上传漏洞        所谓的文件上传漏洞是指用户上传了一个可执行脚本,并通过脚本文件获得执行服务器端命令 的能力。文件上传本身是没有问题的,它只是一种正常的业务需求,问题出在文件上传后服务器...

Struts2学习(八)—文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来...

Javaweb学习笔记10—文件上传与下载

今天来讲javaweb的第10阶段学习。文件的上传与下载,今天主要说的是这个功能的实现,不用说了,听名字就是外行人也知道肯定很重要啦. 老规矩,首先先用一张思维导图来展现今天的博客内容。     ...

XUtils—支持大文件上传,更全面的网络工具

介绍:GitHub的源码 点击查看xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事...

文件上传2————>struts2

Struts2文件上传完美解决中文乱码问题 今天主要分享开源框架Struts2文件上传实例过程,并且笔者将带着大家解决出现的一系列乱码问题,本文章中的重要部分将用特殊颜色标识,斜体表示不确定...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)