深刻使用uploadify上传文件

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

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

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

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

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

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中
						
              });
        }
相关文章
相关标签/搜索