⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileuploadaction.java

📁 个人数字平台(可以很方便的管理个人数据) 纯java编写
💻 JAVA
字号:
package bit.jeffy.action;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import bit.jeffy.db.DataStore;
import bit.jeffy.personal.FileUploadBean;
/*
 * 创建日期 2005-12-8
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */

/**
 * @author jeffy
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
public class FileUploadAction extends Action {

	/* (非 Javadoc)
	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	public ActionForward execute(ActionMapping map, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		// TODO 自动生成方法存根
		HttpSession session = request.getSession();
		
		ActionErrors errors = new ActionErrors();
		
		String ZH = (String)session.getAttribute("current_user");
		
		if( ZH == null ){
			ZH = "default";
		}else {
			ZH = new String(ZH.getBytes("ISO-8859-1"),"GB2312");
		}
		
		//取得当前servlet的全路径,然后在其路径上加上/file/'ZH'
		String dir = servlet.getServletContext().getRealPath("/file/"+ZH);
		
		FileUploadBean hff = (FileUploadBean)form;
		
		FormFile file = hff.getFile();
		
		if( file == null ){
			errors.add("fail_1",new ActionError("FileUploadAction.error.a"));
			saveErrors(request,errors);
			return (map.findForward("uploadfail"));
		}
		
		String fname = file.getFileName();
		
		float filesize = (float)(file.getFileSize()/1024.0);
		
		//判断用户空间是否已满
		DataStore ds = DataStore.getInstance();
		
		ResultSet rs = null;
		
		String sql = "select * from ClientFileSpace where ZH='"+ZH+"'";
		
		float space = 0;
		
		float exist = 0;

		try{
			if( ds != null ){
				rs = ds.read(sql);
				if( rs != null && rs.next() ){
					space = rs.getFloat("FILESPACE");
					exist = rs.getFloat("FILEEXIST");
					
					if( (exist+filesize)> space ){
						errors.add("fail_2",new ActionError("FileUploadAction.error.b"));
						saveErrors(request,errors);
						return (map.findForward("uploadfail"));
					}
				}
			}
		}catch(SQLException e){
			errors.add("fail_3",new ActionError("FileUploadAction.error.c"));
			saveErrors(request,errors);
			return (map.findForward("uploadfail"));
		}
		
		//先执行数据库的操作,再执行文件操作,若文件操作失败, 则滚回数据库
		
		String sql_0 = "select * from ClientFile where ZH='"+ZH+"' and FILENAME='"+fname+"'";
		
		float origin_size = 0;
		
		boolean if_exist = false;
		
		try{
			rs = ds.read(sql_0);
			if( rs != null && rs.next() ){
				if_exist = true;
				origin_size = rs.getFloat("FILESIZE");
			}		
		}catch(Exception e){
			origin_size = 0;
			errors.add("fail_4",new ActionError("FileUploadAction.error.d"));
			saveErrors(request,errors);
			return (map.findForward("uploadfail"));
		}
		
		String sql_1 = "insert ClientFile values('"+ZH+"','"+fname+"','"+filesize+
		      "',CURDATE(),'0')";
		String sql_2 = "update ClientFileSpace " +
					   "set FILEEXIST=FILEEXIST+"+filesize+
					   ",FILECOUNT=FILECOUNT+1 "+
					   "where ZH='"+ZH+"'";
		String sql_3 = "update ClientFile "+
					   "set FILESIZE='"+filesize+"' "+
					   "where ZH='"+ZH+"' and FILENAME='"+fname+"'";
		String sql_4 = "update ClientFileSpace " +
					   "set FILEEXIST=FILEEXIST+"+(filesize-origin_size)+
					   "where ZH='"+ZH+"'";
		rs = null;	
		ds.beginTransaction();
	
		try{
			if( if_exist ){
				ds.execute(sql_3);
				ds.execute(sql_4);
			}else{
				ds.execute(sql_1);
				ds.execute(sql_2);
			}
		}catch(Exception e){
			ds.ErrorOccur();
			ds.commitTransaction();
			errors.add("fail_5",new ActionError("FileUploadAction.error.e"));
			saveErrors(request,errors);
			return (map.findForward("uploadfail"));
			
		}
		
		InputStream streamIn = null;
		
		OutputStream streamOut = null;
		
		try{
			streamIn = file.getInputStream();
			streamOut = new FileOutputStream(dir+"/"+fname);
			int bytesRead = 0;
			byte[] buffer = new byte[8192];
	
			while( (bytesRead = streamIn.read(buffer,0,8192)) != -1 ){
				streamOut.write(buffer,0,bytesRead);
			}
			
			streamOut.close();
			streamIn.close();
		}catch(Exception e){
			ds.ErrorOccur();
			ds.commitTransaction();
			errors.add("fail_6",new ActionError("FileUploadAction.error.f"));
			saveErrors(request,errors);
			return (map.findForward("uploadfail"));
		}
		
		//执行最后正确的事务
		ds.commitTransaction();
		
		file.destroy();
	
		return (map.findForward("uploadsuccess"));
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -