📄 fileuploadaction.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 + -