深刻使用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中
						
              });
        }
相關文章
相關標籤/搜索