六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 39|回复: 0

GWT实现文件上传下载

[复制链接]

升级  74%

5

主题

5

主题

5

主题

童生

Rank: 1

积分
37
 楼主| 发表于 2013-1-29 07:45:50 | 显示全部楼层 |阅读模式
主要采用的两个包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 requestboolean isMultipart = ServletFileUpload.isMultipartContent(req);GWT.log("is multipart? " + Boolean.toString(isMultipart), null);// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload();try {// Parse the requestFileItemIterator 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", "", "");} 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表