博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入使用uploadify上传文件
阅读量:5916 次
发布时间:2019-06-19

本文共 3323 字,大约阅读时间需要 11 分钟。

hot3.png

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

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

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

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

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

private Logger logger=Logger.getLogger(getClass());	private List
Filedata; /** 文件名 */ private List
FiledataFileName; public List
getFiledata() { return Filedata; } public void setFiledata(List
filedata) { Filedata = filedata; } public List
getFiledataFileName() { return FiledataFileName; } public void setFiledataFileName(List
filedataFileName) { FiledataFileName = filedataFileName; } public List
getFiledataContentType() { return FiledataContentType; } public void setFiledataContentType(List
filedataContentType) { FiledataContentType = filedataContentType; } public String getName() { return name; } public void setName(String name) { this.name = name; } /** 文件内容类型 */ private List
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中						              });        }

转载于:https://my.oschina.net/u/137892/blog/99420

你可能感兴趣的文章
JSP 语法
查看>>
表白程序?79行Python表白程序已发送,请接收,滴滴滴
查看>>
JS 获取浏览器和屏幕宽高信息
查看>>
visualvm监控tomcat
查看>>
虚拟机类加载机制(主动应用和被动引用)
查看>>
如何让ajaxfileupload.js支持IE9,IE10,并可以传递多个参数?
查看>>
VirtualBox 5 WIN10系统下切换到全屏设置方法:
查看>>
router.replace和router.push的区别
查看>>
[11/N]论得趣
查看>>
12306又抽风了-20160427
查看>>
iOS纵横列表切换(京东,淘宝商品展示页)
查看>>
手机上如何安装C++编绎器
查看>>
该怎样拆分ABBYY FineReader 12文档
查看>>
Arcface demo
查看>>
iOS开发 专用图层(五)CAEmitterLayer
查看>>
flask获取传递的表单数据和http头的方法
查看>>
实现可以横向滑动的Listview
查看>>
《MongoDB权威指南》MongoDb入门书籍学习
查看>>
Sharepoint 2007 alertme (通知我) 无法正常工作
查看>>
搭建了一个多项目、插件化的ASP.net MVC开发框架
查看>>