文档章节

深入使用uploadify上传文件

藍色的海
 藍色的海
发布于 2012/12/31 22:49
字数 699
阅读 1655
收藏 10

本文主要是实现uploadify+struts2实现文件上传,功能大概有

a.检测文件是否已经上传,如果已经上传(这里主要是检测文件名是否相同),就不再上传,并且给出提示。

b.如果选择的文件之前没有上传,就上传此文件,并且把文件的相应信息保存到数据库(保存的信息包括此文件刚开始上传时间,上传结束后时间,还有文件名)。

c.上传文件成功后,通过uploadify内置的onQueueComplete函数,在此函数里使用ajax函数,从数据库中查询所有保存的文件信息,列出到table里。

上传的UploadAction.java核心函数public String save()

private Logger logger=Logger.getLogger(getClass());
	private List<File> Filedata;
	/** 文件名 */
	private List<String> FiledataFileName;
	public List<File> getFiledata() {
		return Filedata;
	}
	public void setFiledata(List<File> filedata) {
		Filedata = filedata;
	}
	public List<String> getFiledataFileName() {
		return FiledataFileName;
	}
	public void setFiledataFileName(List<String> filedataFileName) {
		FiledataFileName = filedataFileName;
	}
	public List<String> getFiledataContentType() {
		return FiledataContentType;
	}
	public void setFiledataContentType(List<String> filedataContentType) {
		FiledataContentType = filedataContentType;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	/** 文件内容类型 */
	private List<String> FiledataContentType;
	private String name;
	ActionContext ac=ActionContext.getContext();
	ServletContext sc = (ServletContext) ac.get(ServletActionContext.SERVLET_CONTEXT);
public String save(){
		  java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		  String d1;	//定义d1变量用于保存起始上传时间
		  String d2;	//定义d2变量用于保存上传结束时间
		boolean exist=false; //定义exist变量标识此文件是否已经上传,默认为false
		HttpServletResponse response = ServletActionContext.getResponse();
	    response.setHeader("ContentType", "text/html");  
        response.setCharacterEncoding("utf-8");  //response设置响应客户端的编码为utf-8
        String savePath = sc.getRealPath("/");
        savePath = savePath + "prov"+File.separator+"cable"+File.separator; //设置保存目录
        File f1 = new File(savePath);
		if (!f1.exists()) {			   //如果此目录不存在,则创建
			 synchronized (FileUtils.class) {
		            f1.mkdirs();
		        }
		}
		int size = Filedata.size();	
		logger.info("size:"+size);
		if (size == 0)
			return ERROR;
		String name = null; //设置name变量保存文件名
		for (int i = 0; i < size; i++) {
			d1=sdf.format( Calendar.getInstance().getTime());	//取得上传时间,存于d1
			name=FiledataFileName.get(i);
			File file=new File(savePath+name);
			if(file.exists()){	//如果要上传的文件已经存在,则设置exist变量为true,继续下一文件上传,不对此文件进行处理
				exist=true;
				continue;
			}
			try {
				
				FileUtils.copyFile(Filedata.get(i), file);
				d2=sdf.format( Calendar.getInstance().getTime());
            //取得上传结束时间,存于d2,(同时可在此作保存文件信息到数据库的处理...)
            logger.info("start time:"+d1+",end time"+d2+",file name"+name);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		try {
			if(exist){	//如果此文件存在,重置exist为false,并且输出此文件名到客户端
				exist=false;
				response.getWriter().println(name);
			}else{
				response.getWriter().println(0);	//如果此文件不存在,则输出0到客户端
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
前台上传文件:upload.jsp
'onUploadSuccess' : function(file, data, response) {
             if(data!=0){	//如果此文件已经存在,则提示出来...
				alert('The file '+file.name+' was exists in the target folder...');
             }
          
        },
 'onQueueComplete' : function(queueData) {
            $.ajax({	//后台处理完所有上传文件后,调用此ajax函数从数据库查询文件保存的信息到table中
						
              });
        }


© 著作权归作者所有

藍色的海
粉丝 3
博文 19
码字总数 7205
作品 0
广州
其他
私信 提问
加载中

评论(2)

藍色的海
藍色的海 博主

引用来自“安安贝壳”的评论

朋友,你可以告诉我你一次性上传多张文件是怎么一次性放到List里面的,我这边都是一张图片一个请求。

struts2上传文件有规定:
当上传上个文件给struts2的action处理时,
要定义以下属性来获得上传文件的各个属性,一般如下:
private File xx; //xx代表文件名
private String xxFileName; //xxFileName代表文件名;!注意FileName
              //的前面必须是文件名的变量名,这里是xx
private String xxContentType; //xxContentType代表文件类型

如果一次性上传多个文件,采用list来封装多个文件:
private List<File> xx; //xx代表上传文件集合
private List<String> xxFileName; //xxFileName代表上传文件名集合
private List<String> xxContentType; //xxContentType代表上传文件类型集合

注:Uploadify组件本身支持多文件上传,默认就是支持的
安安贝壳
安安贝壳
朋友,你可以告诉我你一次性上传多张文件是怎么一次性放到List里面的,我这边都是一张图片一个请求。
Django使用Uploadify组件实现图片上传

Uploadify组件上传文件很酷,可以实现文件进度上传,而且可以批量上传各种文件。好处还很多,具体详情登到官网看看文档了解吧。在同类组件中,Uploadify做的也很出色。打算在Django中用它,两...

岭南六少
2011/08/08
0
4
基于uploadify.js实现多文件上传和上传进度条的显示

  uploadify是JQuery的一个插件,主要实现文件的异步上传功能,可以自定义文件大小限制、文件类型、是否自动上传等属性,可以显示上传的进度条。官网地址是http://www.uploadify.com/,进入...

雲霏霏
2014/12/08
0
0
使用Uploadify(UploadiFive)多文件上传控件遇到的坑

最近项目中需要实现多文件上传功能,于是结合需求最终选择了Uploadify这一款控件来实现。相比其他控件,Uploadify具有简洁的界面,功能API基本可以解决大多数需求,又是基于jquery的,配置起...

chaun
2016/07/08
77
0
上传插件uploadify文档粗略解读

uploadify文档粗略解读 官方下载地址:http://www.uploadify.com/demos/ 文档阅读: 一般性建议: 执行uploadify使用uploadify方法自定义服务器端上传脚本上传时使用session 1.属性 属性有2...

oneboi
2016/12/02
3
0
Django用uploadify实现图片批量上传

分享一下在Django中使用uploadify——一个jQuery批量上传插件——的方法。github上的django-uploadify使用的是2.1.4版本,上传button只能使用图片,不能很方便的修改样式。本文针对的是uploa...

红薯
2012/03/06
2.4K
2

没有更多内容

加载失败,请刷新页面

加载更多

BlockLang 0.3.0 发布啦

BlockLang 官网:https://blocklang.com Block Lang 0.3.0 引入一个新概念:组件市场。 拼装软件时使用的零部件统称为组件。所有组件在组件市场中统一管理,包括 Block Lang 的内置组件。 组...

blocklang
51分钟前
2
0
OSChina 周日乱弹 —— 请务必让我分担他们的痛苦!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy :分享石元丈晴的单曲《Why》: 《Why》- 石元丈晴 手机党少年们想听歌,请使劲儿戳(这里) @一代码哥 :当他妈狗屁的程序员,天天...

小小编辑
今天
471
6
php 遇到 No input file specified的解决方法

(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1...

chenhongjiang
今天
11
0
MySQL 基础

一、常用命令 在命令行中,配置好环境变量后,通过cmd可以直接进入mysql命令行模式,同时列举几种常用命令 # 进入mysql数据库,密码可以先不写,打完-p后再输入,防止被别人看到mysql -u账...

华山猛男
今天
6
0
简单的博客系统(四)Django请求HTML页面视图信息--基于函数的视图

1. 编写用于查询数据的功能函数 应用目录 下的 views.py 文件通常用于保存响应各种请求的函数或类 from django.shortcuts import renderfrom .models import BlogArticles# Create your ...

ZeroBit
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部