使用GWT+FileUpload的完整的例子
2010-04-23 17:53
363 查看
今天在GWT中搞了一搞文件上传~Mark之~
首先先去下载commons-fileupload-1.2.1.jar
下载地址:http://commons.apache.org/fileupload/
以及commons-io-1.4.jar
下载地址:http://commons.apache.org/io/
在java客户端添加如下代码:
添加一个服务器端的servlet:
在web.xml中添加servlet的mapping:
PS:web.xml中的mconfrelease3是项目名,fileupload对应的是客户端文件中那句formPanel.setAction(GWT.getModuleBaseURL()+"fileupload");的fileupload~
首先先去下载commons-fileupload-1.2.1.jar
下载地址:http://commons.apache.org/fileupload/
以及commons-io-1.4.jar
下载地址:http://commons.apache.org/io/
在java客户端添加如下代码:
//选择文件上传的浏览按钮 final FileUpload fileUpload = new FileUpload(); fileUpload.setName("uploadFormElement"); //创建表单Panel,提交HTML表格,添加fileUpload final FormPanel formPanel = new FormPanel(); formPanel.setEncoding(FormPanel.ENCODING_MULTIPART); formPanel.setMethod(FormPanel.METHOD_POST); formPanel.setAction(GWT.getModuleBaseURL()+"fileupload"); formPanel.setWidget(fileUpload); //文件上传按钮 final Button btnUpload = new Button("Upload"); //单击按钮提交servlet btnUpload.addClickHandler(new ClickHandler(){ @Override public void onClick(ClickEvent event) { // TODO Auto-generated method stub formPanel.submit(); } }); formPanel.addFormHandler(new FormHandler(){ @Override public void onSubmit(FormSubmitEvent event) { // TODO Auto-generated method stub if(fileUpload.getFilename().length() == 0){ //Window.alert("必须选择一个文件"); event.setCancelled(true); }else if(!fileUpload.getFilename().endsWith(".jpg") && !fileUpload.getFilename().endsWith(".gif")){ System.err.println("error in format"); event.setCancelled(true); } } @Override public void onSubmitComplete(FormSubmitCompleteEvent event) { // TODO Auto-generated method stub System.out.println(" ==== onSubmitComplete ===="); System.out.println(event.getResults()); } });
添加一个服务器端的servlet:
import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=utf-8"); FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = null; upload.setSizeMax(1024*1024*1); try { items = upload.parseRequest(request); } catch (FileUploadException ex) { throw new ServletException(ex); } Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField() == false) { //获得上传路径 String savePath = getServletContext().getRealPath("/uploads"); //获得文件扩展名 String ext = item.getName().substring(item.getName().lastIndexOf(".")); //取的file域的值的名字,不带路径 int pos = item.getName().lastIndexOf("//"); String fieldValue = item.getName().substring(pos+1); //或直接保存成文件 File file = new File(savePath,fieldValue); try { item.write(file); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }//直接保存文件 } } } }
在web.xml中添加servlet的mapping:
<servlet> <servlet-name>fileupload</servlet-name> <servlet-class>myproject.server.FileUploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>fileupload</servlet-name> <url-pattern>/mconfrelease3/fileupload</url-pattern> </servlet-mapping>
PS:web.xml中的mconfrelease3是项目名,fileupload对应的是客户端文件中那句formPanel.setAction(GWT.getModuleBaseURL()+"fileupload");的fileupload~
相关文章推荐
- 使用Silverlight2dataGrid例子(完整XAML)
- 使用Hibernate的一个完整例子
- C# 使用存储过程访问数据库的完整例子
- jsp使用自定义标签taglib分页系列——完整例子
- PHP完整的AES加解密算法使用及例子(256位)
- 一个使用JdbcTemplate增加一组数据的完整例子
- springMVC与jquery结合使用完整例子
- 使用jQuery进行组件开发(完整例子)
- StrutsFileUpload使用简单例子
- jquery.validation.js 表单验证 完整例子使用
- 使用Connector/C++(VS2015)连接MySQL的完整例子
- 使用Hibernate的一个完整例子
- 使用连接池访问memcached(libmemcached)的完整例子
- QueryInterface 实现及使用的完整的例子
- updatepanel的使用【他人经验+原创 完整例子】
- 使用NAPI的完整例子
- 使用Hibernate的一个完整例子
- 一个完整的使用成员函数指针的例子
- jsp使用自定义标签taglib分页系列——完整例子
- 使用Apache的FileUpLoad完成文件上传(源码+完整注释)