`
feirou520
  • 浏览: 118627 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

GWT实现文件上传下载

    博客分类:
  • GWT
阅读更多

主要采用的两个包gwtextux.jar(0.4版本)和commons-fileupload-1.2.1.jar来完成。

在gwt.xml里添加此内容

如你所见,相关JS(在gwtextux.jar包里)放在public/js/下面,与xml对应

 

<module>
      <entry-point class='com.google.gwt.client.test'/>
      <stylesheet src='test.css' />
		<stylesheet src="js/resources/css/ext-all.css" />
	<script src="js/adapter/ext/ext-base.js" />
	<script src="js/ext-all.js" /> 
	 <inherits name="com.gwtext.GwtExt"/>



	        <!-- upload              -->
<servlet path="/UploadSvc" class="com.google.gwt.service.UploadSvcImpl" />
<inherits name="com.gwtextux.GwtExtUx"/>
<inherits name="com.gwtextux.UploadDialog"/>
<script src="js/Ext.ux.UploadDialog.js" />
		<!-- upload              -->

</module>


  客户端:

 import com.google.gwt.core.client.EntryPoint;  
 import com.google.gwt.user.client.ui.RootPanel;  
 import com.gwtext.client.widgets.Button;  
 import com.gwtext.client.widgets.Panel;  
 import com.gwtext.client.widgets.event.ButtonListenerAdapter;  
 import com.gwtext.client.core.EventObject;  
 import com.gwtext.client.core.UrlParam;  
 import com.gwtextux.client.widgets.upload.UploadDialog;  

public class UploadDialogSample implements EntryPoint{  
		 
	 public void onModuleLoad() {  
		 Panel panel = new Panel();  
		 Button button = new Button("Upload File", new ButtonListenerAdapter() {  
		     public void onClick(final Button button, EventObject e) {  
	       UploadDialog dialog = new UploadDialog();  
                        //于xml对应
	       dialog.setUrl("UploadSvc");  
                       //上传文件类型
	       //dialog.setPermittedExtensions(new String[]{"jpg", "gif"}); 
                       //参数
		     UrlParam param[] = new UrlParam[2];  
		     param[0]=new UrlParam("name1", "value1");  
		     param[1]=new UrlParam("name2", "value2");  
		     dialog.setBaseParams(param);  
		                             //上传数据名称 并非文件名
		     dialog.setPostVarName("myvar");  
		     dialog.show();  
			         }  
			     });  
		     panel.add(button);  
		     RootPanel.get().add(panel);  

	     }  
	 }  

 

 

 

 

 

服务端:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;

import com.google.gwt.core.client.GWT;

public class UploadSvcImpl extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		/*
		 * The following commented code uses Apache Commons Upload
		 */
		// Check that we have a file upload request
		boolean isMultipart = ServletFileUpload.isMultipartContent(req);
		GWT.log("is multipart? " + Boolean.toString(isMultipart), null);
		// Create a new file upload handler
		ServletFileUpload upload = new ServletFileUpload();

		try {
			// Parse the request
			FileItemIterator iter = upload.getItemIterator(req);
			while (iter.hasNext()) {
				FileItemStream item = iter.next();
				String name = item.getFieldName();
				InputStream stream = item.openStream();
				if (item.isFormField()) {
					System.out.println("Form field " + name + " with value "
							+ Streams.asString(stream) + " detected.");
				} else {
					System.out.println("File field " + name
							+ " with file name " + item.getName()
							+ " detected.");
					BufferedInputStream inputStream = new BufferedInputStream(
							stream);// 获得输入流
					BufferedOutputStream outputStream = new BufferedOutputStream(
							new FileOutputStream(new File("/var/app/fax/"
									+ item.getName())));// 获得文件输出流
					Streams.copy(inputStream, outputStream, true); // 开始把文件写到你指定的上传文件夹
				}
				stream.close();
			}
			System.out.println("上传成功!");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

}
 

 

你也可以直接访问http://max-bazhenov.com/dev/upload-dialog-2.0/index.php 

 

 

下载:

grid里双击触发下载

	protected void onGridRowDblClick(GridPanel grid, int rowIndex, EventObject e) {
              // test.rar在 public目录下
		Window.open(GWT.getHostPageBaseURL()+"test.rar", "", "");
	}
 

 

  • 描述: 效果图
  • 大小: 63.6 KB
分享到:
评论
7 楼 luoming520wen 2011-12-21  
最近我也在用GWT做上传和下载的功能,把代码发我邮箱里面不胜感激啊
6 楼 luoming520wen 2011-12-21  
能帮忙发份代码给我邮箱吗,小弟感激不尽 13556833620@163.com
5 楼 fjxxinxin 2010-08-11  
能帮忙发份代码给我邮箱吗,小弟感激不尽 565101909@qq.com
4 楼 yangkai 2010-04-14  
能发给源代码给我吗?谢谢!

alex1161596325@gmail.com
3 楼 sphinxdwood 2009-05-09  
原来项目里面就有一个servlet,我再新建了一个用于文件上传,提示java.lang.ClassNotFoundException: 这是怎么回事啊?
2 楼 sphinxdwood 2009-05-09  
能把源文件发一份给我吗?sphinxdwood@126.com.谢谢了
1 楼 xyktc_123 2009-01-06  
能把下载的那部分写得详细些吗?

相关推荐

    GWT实现文件上传文件上传

    标题 "GWT实现文件上传" 涉及到的技术核心是使用Google Web Toolkit(GWT)来处理客户端的文件上传功能。GWT是一款强大的开发工具,它允许开发者使用Java语言编写客户端的Web应用,然后自动编译成JavaScript,使得...

    使用GWT实现文件上传功能

    以上就是使用GWT实现文件上传的基本步骤。需要注意的是,这只是一个基础示例,实际应用中还需要考虑错误处理、安全性(防止上传恶意文件)、文件大小限制以及并发上传等问题。此外,为了提高用户体验,可以使用...

    gwt , gxt文件上传

    文件上传是GWT和GXT中常见的功能,通过以上方法,开发者可以创建出用户友好的文件上传界面,并实现与服务器的数据交换。在处理文件上传时,理解这些基本概念和API是至关重要的,这将有助于构建出高效、安全的Web应用...

    gwt开发问题

    GWT通过`FileUpload`组件支持文件上传,而下载则通常通过服务器端生成下载链接,客户端通过JavaScript或GWT代码触发下载。需要注意的是,由于浏览器安全限制,文件下载通常不能通过Ajax异步方式进行。 #### 四、GWT...

    gwt_demo.rar_DEMO_gwt_gwt demo_gwt_demo

    为了深入学习GWT,你可以参考官方文档、在线教程、社区论坛以及各种GWT相关的书籍。不断实践和探索,才能更好地掌握GWT的精髓,利用其优势开发出优秀的Web应用程序。 总之,"gwt_demo.rar"是一个很好的起点,通过...

    gwt使用手册

    完成验证后,即可通过Eclipse的部署功能将应用上传至Google服务器。部署过程中,需确保本地编译无误,并正确处理代理设置(如有)。成功部署后,应用可通过“appID.appspot.com”的URL在线访问。 GWT的强大之处在于...

    maven创建的简单的gwt工程源码

    这通过`gwt:devmode`命令实现,该命令启动一个内置的Jetty服务器并打开浏览器加载应用。 6. **源码组织**: `TodoListApp`很可能是一个主类的名字,它可能是GWT应用的入口点。源代码可能包含了业务逻辑、视图组件...

    gwt界面编写example源代码

    总之,这个压缩包提供了全面的GWT界面开发实践,从基本的UI组件使用到解决浏览器兼容性问题,再到实现文件操作功能,对于学习和理解GWT技术及其在实际项目中的应用具有很高的价值。通过深入研究这些源代码,开发者...

    gwt项目开发的经验集

    在GWT中,实现文件上传通常需要使用隐藏表单的方式。 #### 示例代码 以下是一个使用隐藏表单实现文件上传的示例: ```java public class FileUploadExample extends Composite { public FileUploadExample() { ...

    GWT编写hello world

    1. **GWT环境搭建**:首先,你需要下载并安装GWT SDK,然后配置IDE,如Eclipse或IntelliJ IDEA,以支持GWT开发。可能还需要设置构建工具,如Maven或Gradle,来管理项目依赖。 2. **创建GWT项目**:使用IDE的GWT插件...

    gwt 项目创建教程

    5. **部署**:将项目打包成WAR文件,然后上传至GAE/J服务器进行部署。 在部署过程中,需要注意GAE/J的一些限制,如内存限制、数据存储模型(使用Google Datastore)以及HTTP请求的处理。 总结来说,创建一个GWT...

    上传组件开发-基于Bootstrap3

    对于多文件上传,可以创建多个进度条,每个对应一个正在上传的文件,以便用户能够清晰地看到每个文件的上传状态。 在GWT(Google Web Toolkit)环境中,我们可以利用GWT的事件处理和DOM操作能力,封装一个上传组件...

    在liferay中整合GWT,附例子

    7. **发布与升级**:一旦应用测试通过,可以将WAR文件上传到Liferay的控制台进行发布,或者将更新的WAR文件放入Liferay的部署目录,系统会自动检测并更新portlet。 在提供的文件列表中,`build.properties`是Ant...

    gwt学习笔记

    1. **FileUpload**:文件上传控件。可以通过 `setName()` 方法设置表单元素的名称。 2. **FlexTable and Grid**:表格控件,类似于HTML中的 `&lt;table&gt;`。可以使用 `setText()`, `setHTML()`, `setWidget()` 等方法...

    commons-fileupload-1.2.1.jar、gwtextux.jar、commons-io-1.4.jar

    总结来说,这个"gwt文件上传下载架包"是一个包含三个关键组件的解决方案,用于在基于GWT的Java Web应用中实现高效、安全的文件上传和下载功能。这些组件协同工作,提供了从用户界面交互到后台处理的完整流程支持,是...

    GWT-EXT+IBATIS+SQL实现表格,树,面板

    例子包括对GWT-EXT的对表格,树,面板操作。对与IBATIS数据结合使用。...整个工程文件太大,这里只能上传源代码,如果需要整个工程的可以发邮件给我 xuzhenqinandy@163.com 或加QQ一起交流77544738

    WebGallery:Django和GWT中的图片库

    这个项目的源码可能包含了Django的模型定义、视图函数、模板文件以及GWT的Java源代码、资源文件和编译后的JavaScript代码。通过分析这些文件,开发者可以学习到如何在实际项目中整合Django和GWT,以及如何构建一个...

Global site tag (gtag.js) - Google Analytics