`
yourgame
  • 浏览: 356612 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

EXTJS 3.0 网狗盘之上传组件[开源]

阅读更多
自从EXTJS3.0发布后,很多同学后网友都要求我共享基于EXTJS3.0的多文件上传组件.我特地做了一个基于3.0和struts2的示例,特此奉上.
w_e_ibo:
http://t.cn/zjqEaRh  
http://weibo.com/liao27




//调用方法
Ext.onReady(function() {
	var win = new Ext.Window({
		title : '多文件上传示例',
		width : 500,
		height : 500,
		resizable : false,
		layout : 'fit',
		items : [{
			xtype : 'uploadpanel',
			uploadUrl : 'uploadFiles.action',
			filePostName : 'myUpload', // 这里很重要,默认值为'fileData',这里匹配action中的setMyUpload属性
			flashUrl : 'js/swfupload.swf',
			fileSize : '500 MB',
			height : 400,
			border : false,
			fileTypes : '*.*', // 在这里限制文件类型:'*.jpg,*.png,*.gif'
			fileTypesDescription : '所有文件',
			postParams : {
				path : 'files\\' // 上传到服务器的files目录下面
			}
		}],
		bbar : ['作者:廖瀚卿 | QQ:3990995 | 博客:http://yourgame.iteye.com']
	});

	win.show();
});


//BasicAction
package com.lhq.uploader;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class BaseAction extends ActionSupport {

	public String jsonString;

	public void outJsonString(String str) {
		getResponse().setContentType("text/javascript;charset=UTF-8");
		outString(str);
	}

	/*
	 * public void outJson(Object obj) {
	 * outJsonString(JSONObject.fromObject(obj).toString()); }
	 * 
	 * public void outJsonArray(Object array) {
	 * outJsonArray(JSONArray.fromObject(array).toString()); }
	 */

	public void outString(String str) {
		try {
			PrintWriter out = getResponse().getWriter();
			out.write(str);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void outXMLString(String xmlStr) {
		getResponse().setContentType("application/xml;charset=UTF-8");
		outString(xmlStr);
	}

	/**
	 * 获得request
	 * 
	 * @return
	 */
	public HttpServletRequest getRequest() {
		return ServletActionContext.getRequest();
	}

	/**
	 * 获得response
	 * 
	 * @return
	 */
	public HttpServletResponse getResponse() {
		return ServletActionContext.getResponse();
	}

	/**
	 * 获得session
	 * 
	 * @return
	 */
	public HttpSession getSession() {
		return getRequest().getSession();
	}

	/**
	 * 获得servlet上下文
	 * 
	 * @return
	 */
	public ServletContext getServletContext() {
		return ServletActionContext.getServletContext();
	}

	public String getRealyPath(String path) {
		return getServletContext().getRealPath(path);
	}
}



//FileAction
package com.lhq.uploader;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;

/**
 * FileAction.java Create on 2008-12-18 上午09:16:22
 * 
 * 说明:文件处理
 * 
 * Copyright (c) 2008 by yourgame.
 * 
 * @author 廖瀚卿
 * @version 1.0
 */
@SuppressWarnings("serial")
public class FileAction extends BaseAction {
	private Map<String, Object> infos = new HashMap<String, Object>();

	public static final String ROOT = "upload\\";

	private File myUpload;

	private String myUploadContentType;

	private String myUploadFileName;

	private String path;

	private boolean success;

	/**
	 * 上传文件
	 * 
	 * @return
	 */
	public String uploadFiles() {
		String rootPath = getSession().getServletContext().getRealPath("/");
		rootPath += ROOT;
		String sp = rootPath + getPath();
		MyUtils.mkDirectory(sp);
		try {
			MyUtils.upload(getMyUploadFileName(), sp, getMyUpload());
			this.success = true;
		} catch (RuntimeException e) {
			e.printStackTrace();
		}
		return SUCCESS;
	}

	public File getMyUpload() {
		return myUpload;
	}

	public void setMyUpload(File myUpload) {
		this.myUpload = myUpload;
	}

	public String getMyUploadContentType() {
		return myUploadContentType;
	}

	public void setMyUploadContentType(String myUploadContentType) {
		this.myUploadContentType = myUploadContentType;
	}

	public String getMyUploadFileName() {
		return myUploadFileName;
	}

	public void setMyUploadFileName(String myUploadFileName) {
		this.myUploadFileName = myUploadFileName;
	}

	public boolean isSuccess() {
		return success;
	}

	public void setSuccess(boolean success) {
		this.success = success;
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) throws UnsupportedEncodingException {
		this.path = URLDecoder.decode(path, "UTF-8");
	}

	public Map<String, Object> getInfos() {
		return infos;
	}

	public void setInfos(Map<String, Object> infos) {
		this.infos = infos;
	}
}



//MyUtils.java
package com.lhq.uploader;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MyUtils {

	/**
	 * 上传文件
	 * 
	 * @param savePath
	 *            文件的保存路径
	 * @param uploadFile
	 *            被上传的文件
	 * @return newFileName
	 */
	public static String upload(String uploadFileName, String savePath, File uploadFile) {
		String newFileName = getUUIDName(uploadFileName, savePath);
		try {
			FileOutputStream fos = new FileOutputStream(savePath + newFileName);
			FileInputStream fis = new FileInputStream(uploadFile);
			byte[] buffer = new byte[1024];
			int len = 0;
			while ((len = fis.read(buffer)) > 0) {
				fos.write(buffer, 0, len);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return newFileName;
	}

	public static String getUUIDName(String fileName, String dir) {
		String[] split = fileName.split("\\.");
		String extendFile = "." + split[split.length - 1].toLowerCase();
		return java.util.UUID.randomUUID().toString() + extendFile;
	}

	/**
	 * 根据路径创建一系列的目录
	 * 
	 * @param path
	 */
	public static boolean mkDirectory(String path) {
		File file = null;
		try {
			file = new File(path);
			if (!file.exists()) {
				return file.mkdirs();
			}
		} catch (RuntimeException e) {
			e.printStackTrace();
		} finally {
			file = null;
		}
		return false;
	}

}




  • 大小: 100.3 KB
49
4
分享到:
评论
10 楼 yushi103 2010-09-20  
action里面创建文件夹的的部分代码,略有问题,不过很容易就可以改正了。
但是真的是不知道为什么,单独用这个小项目的时候,可以使用,但是把这个控件,加入到我自己的项目里面的时候就:“添加文件”按钮,死活没反应!??????
tbar : [{
text : '添加文件',
iconCls : 'db-icn-add'
}, {
这点,代码,实在是看不懂!怎么能实现的一个选择文件的窗口呢?????
我用的是3.2版本,应该不是版本问题。
9 楼 hexin46373 2010-08-24  
感谢楼主分享这么好的案例 奉献精神可嘉 值得我们新手学习
8 楼 zdtwyjp 2010-07-30  
lixiaokui11 写道
添加文件功能怎么没有呢?

你好呀!你“添加文件”功能是怎么解决的呀?我的在FF中点击的时候没有反应?
7 楼 wanli 2010-06-08  
这个插件不借,不过希望楼主能提供一些详细的资料,方便新手学习。
顺便问下怎么设为模式窗口?
6 楼 dsf007 2010-05-09  
请问下界面上是如何获知文件上传进度以及传输速度等数据的?向后台轮询?
是否支持多用户同时上传呢?怎么保证每个用户看到的是自己的上传进度,而不是别人的呢?即保证每个用户之间的上传进度显示是相互独立的呢?
5 楼 leexiaodong2009 2010-05-01  
好像没有全部开源的。
4 楼 qbjshmilykm 2010-03-25  
请问这个SWFUpload能用在ext 2.x中吗?
3 楼 lixiaokui11 2010-03-23  
可以用,在js里没看见,不好意思
2 楼 lixiaokui11 2010-03-23  
添加文件功能怎么没有呢?
1 楼 younglibin 2010-01-08  
高手看看我的问题吧:http://www.iteye.com/topic/554759

相关推荐

    extJS3.0完整包

    extJS3.0 extJS3.0 extJS3.0 extJS3.0 extJS3.0 extJS3.0 extJS3.0

    ExtJS3.0中文API

    绝对的ExtJS3.0中文API,本人在网上找了好久才找到的,在此奉献给大家!!解压后有30多兆!!

    Extjs3.0 常用组件介绍及怎么安装开发利器Spket

    **ExtJS 3.0 常用组件介绍** ExtJS 是一款强大的JavaScript库,用于构建富客户端Web应用。在3.0版本中,它提供了一系列丰富的组件,这些组件可以帮助开发者构建功能丰富的用户界面。以下是一些ExtJS 3.0中的常用...

    extjs3.0 组件

    EXTJS 3.0 版本是其历史上的一个重要里程碑,提供了丰富的组件库和强大的功能,为开发人员提供了构建复杂Web界面的能力。在这个课程中,我们将深入探讨EXTJS 3.0 的核心组件,这些组件是构建用户界面的基础。 首先...

    ExtJS3.0 源码分析与开发实例宝典

    ExtJS3.0 源码分析与开发实例宝典

    extjs3.0开发包含示例api

    EXTJS 3.0是一款基于JavaScript的开源UI框架,它为Web应用提供了丰富的组件和功能。这个开发包包含了EXTJS 3.0的核心API、示例代码和源文件,是学习和开发EXTJS应用程序的重要资源。 一、EXTJS 3.0 API EXTJS 3.0的...

    EXTJS3.0多文件上传组件

    综上所述,EXTJS3.0多文件上传组件结合了EXTJS的组件化开发优势和SWFUpload的多文件上传功能,为开发者提供了一个高效且易于定制的文件上传解决方案。通过深入理解和掌握相关知识点,可以开发出满足不同需求的多文件...

    EXTJS3.0登陆DEMO

    EXTJS3.0提供了丰富的组件库,如表格、窗口、面板、菜单、表单等,使得开发者能够构建出交互性强、用户体验良好的前端应用。在这个DEMO中,EXTJS被用来创建登录界面,可能包括用户名和密码输入框、登录按钮以及一些...

    Extjs3.0 中文API帮助文档

    Extjs3.0中文API文档 够详细 够详细 够详细

    EXTJS3.0中文API (离线)

    9. **拖放功能**:EXTJS支持拖放操作,允许用户将组件或数据在界面上自由移动,增强了交互性。 10. **国际化支持**:虽然这里的API是中文版,但EXTJS本身支持多语言,方便不同地区用户使用。 11. **CHM格式**:...

    ExtJS3.0可视化开发工具

    通过"ExtJS3.0可视化开发工具",开发者可以更高效地创建和维护ExtJS应用程序,提升开发效率。然而,值得注意的是,虽然可视化工具简化了部分流程,深入理解ExtJS的底层原理和API仍然是必要的,特别是在处理复杂逻辑...

    extjs3.0 API 中英

    5. **表单组件**:ExtJS 3.0包含一系列强大的表单组件,如文本框(TextField)、复选框(Checkbox)、下拉列表(ComboBox)等,它们都支持验证和数据绑定。 6. **图表组件**:通过ExtJS的Charts模块,开发者可以...

    ExtJS 3.0 API 文档离线包

    此“ExtJS 3.0 API 文档离线包”包含了所有开发者需要了解的关于3.0版本ExtJS框架的详细信息,以便在没有互联网连接的情况下进行学习和开发。 API文档是任何开发工具的核心部分,它提供了一个清晰的指南,解释了库...

    Extjs 3.0 中文API

    ExtJS 3.0 是一个基于JavaScript的开源框架,用于构建富客户端Web应用程序。这个框架提供了丰富的组件库、数据绑定机制、高级布局管理和强大的事件处理系统。中文API帮助手册是开发者学习和掌握ExtJS 3.0的重要参考...

    extjs3.0框架

    7. **拖放功能**:ExtJS支持拖放操作,允许用户将组件或数据在页面上自由移动,提高用户体验。 8. **Ajax和JSON**:ExtJS内置了Ajax通信机制,通过XMLHttpRequest对象与服务器进行异步通信。同时,框架支持JSON数据...

    extjs3.0部分插件代码

    总的来说,"extjs3.0部分插件代码"资料能够帮助我们深入理解ExtJS 3.0的组件体系,特别是Spinner插件的实现和应用。通过对这部分内容的学习,开发者可以更熟练地运用ExtJS构建功能丰富的Web应用,并提升用户界面的...

    ExtJs3.0API

    ExtJs3.0API,希望对大家有所帮助

    ExtJS 3.0 学习资源

    ExtJS 3.0 学习资源,有兴趣的 可以下载看看!!!!

    安装ExtJS3.0开发环境

    在网络上搜集,自己安装成功后在使用的开发环境。因ExtJS3.0和spket-1.6.18.jar的开发包太大不能上传,里面有安装说明和下载路径 ext-jsb2.zip jsb2是最新的。。请所需者取之

    Extjs3.0中文文档大全

    "Extjs3.0中文文档大全"提供了全面的指南,帮助开发者深入理解和有效地利用这个版本的ExtJS。 文档可能包括以下几个关键部分: 1. **快速入门**:这部分通常会介绍如何在项目中引入ExtJS库,创建基本的页面结构,...

Global site tag (gtag.js) - Google Analytics