`
yourgame
  • 浏览: 356033 次
  • 性别: 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
分享到:
评论
30 楼 请叫我东哥 2014-07-10  
需要翻编译?看不到后台代码
29 楼 cc_01 2014-04-08  
 
28 楼 chenlin10058 2013-09-06  
请问楼主,为什么在IE6中,toolbar的第一个按钮,也就是”添加文件“按钮,点击不动,像被什么东西遮罩了一样,无法弹框选文件!
用的extjs2.0版本!
盼回复~
27 楼 xgwfhn 2013-05-26  
SCRIPT5009: “__flash__removeCallback”未定义   老是报这个错误  怎么解决呢
26 楼 walnuting 2013-01-16  
请问这个是基于hadoop的吗
25 楼 zhangyezeng 2012-03-12  
我再详细的说一下啊,就是那个限制文件类型的时候fileTypes后面若是协议中扩展名如'*.flv'这个是可以生效的,但是如果两种以上扩展名'*.flv,*.mp4'就什么文件也看不到了,这是怎么回事儿啊,是不是不能匹配多扩展名啊?求解,太感谢啦
24 楼 zhangyezeng 2012-03-12  
我有个问题,选择文件格式的时候只能协议中扩展名,若是写两种以上的话就什么文件也看不到了,难道只能匹配一种扩展名?
23 楼 yourgame 2012-02-08  
jy0902 写道
首先灰常滴   主分享!!
    然后告诉大家  如果点击不能和后台交互的话  把swfupload.js 的文件换掉  网上有得下!!!! 貌似楼主的这个文件出了点问题, 我把这个文件换了就顺利能后后台交互了!我是用来上传视频的  把strut配置在改下  视频文件上传成功!!

这个在当初发布的时候,浏览器都支持的,现在也不知道是什么个情况了,年代已久
22 楼 jy0902 2012-02-06  
首先灰常滴   主分享!!
    然后告诉大家  如果点击不能和后台交互的话  把swfupload.js 的文件换掉  网上有得下!!!! 貌似楼主的这个文件出了点问题, 我把这个文件换了就顺利能后后台交互了!我是用来上传视频的  把strut配置在改下  视频文件上传成功!!
21 楼 咸鱼干 2011-10-13  

为什么我点击上传后,没有和后台交互呢?我是用的spring的MVC写的,我也尝试过用联servlet但还是后台没反应,也没有报错,请楼主帮我解决,不胜感激!
20 楼 Sq_I 2011-08-31  
为什么我照着写了却什么都没有出来?
19 楼 liukaibernard 2011-07-20  
怎么 点击上传后,没有与后天进行交互喃?  请问是什么原因?
18 楼 shawnfree 2011-04-07  
解决下问题呀 在google 浏览器和火狐 问什么不能到 Action 呢????
17 楼 shawnfree 2011-04-07  
还有问题 问什么在 google 浏览器 和 火狐浏览器中 不会到 Action 方法中
会自动 跳到 no_login.jsp 页面 使我丢了什么参数吗?
我已经登录了。这个怎么解决呢?
16 楼 shawnfree 2011-04-07  
问 什么 在IE下 我关闭后在打开 “添加文件” 按钮就没反映了 怎么解决呢?能说下吗?
15 楼 thisisnoman 2011-02-20  
为什么我在.net下运行,上传文件时会停住呢?代码没有改动过,运行环境为visual 2008

(上传不了图片?。。。)
14 楼 uatoily 2010-12-07  
上传时文件大小好象有限制,大于8M都无法上传?
13 楼 yuermeizi 2010-11-29  
ff bug 

添加样式:

.swfupload{position: absolute; top: 0pt; left: -2px;}
12 楼 chridll 2010-10-07  
postParams : {  
                path : 'files\\' // 上传到服务器的files目录下面  
            }  

可以传中文参数吗?我的就传不到后台,获得的值为NULL,字母或数字就可以
11 楼 yourgame 2010-09-21  
yushi103 写道
action里面创建文件夹的的部分代码,略有问题,不过很容易就可以改正了。
但是真的是不知道为什么,单独用这个小项目的时候,可以使用,但是把这个控件,加入到我自己的项目里面的时候就:“添加文件”按钮,死活没反应!??????
tbar : [{
text : '添加文件',
iconCls : 'db-icn-add'
}, {
这点,代码,实在是看不懂!怎么能实现的一个选择文件的窗口呢?????
我用的是3.2版本,应该不是版本问题。

其实在"添加文件"按钮上面有一个flash,他是透明的,通过点击来触发选择对话框,如果弹不出对话框只有一种原因,那就是你flash文件的路径不正确,你可以尝试在相关代码的地方使用flash的绝对路径即可

相关推荐

    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文档是任何开发工具的核心部分,它提供了一个清晰的指南,解释了库...

    extjs3.0 中扩展的日期控件

    由于extjs3.0自己封装的时间不能够选择时分秒,给大家开发带来了一些麻烦。虽然网上有ext2.0的日期扩展控件,但在3.0中不能用。公司现在项目正用了,因此我就对extjs3.0时间控件的扩展,实现了可选择时分秒功能。...

    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是最新的。。请所需者取之

Global site tag (gtag.js) - Google Analytics