📄 uploadbo.java
字号:
/* ====================================================================
* $Id$
* ====================================================================
* 文件名 UploadBo.java
* 机能名
* 履历 2005-2-18 dlxu 创建新文件
* Copyright 2004 东南大学 All Rights Reserved
* ====================================================================
*/
package cn.edu.seu.album.bo;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Calendar;
import org.apache.log4j.Category;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.upload.FormFile;
import cn.edu.seu.album.common.PJBaseBo;
import cn.edu.seu.album.common.PJCondition;
import cn.edu.seu.album.common.PJConst;
import cn.edu.seu.album.common.PJException;
import cn.edu.seu.album.common.PJResult;
import cn.edu.seu.album.dao.UploadDao;
import cn.edu.seu.album.model.UploadCondition;
import cn.edu.seu.album.model.UploadRslt;
/**
* <p> [概 要] </p>
* <p> [详 细] </p>
* <p> [备 考] 无。</p>
*
* @author dlxu
* @version 1.0 2005-2-18
* @since 1.0
*/
public class UploadBo extends PJBaseBo {
/**
* 日志定义。
*/
private static final Category log = Logger.getInstance(UploadBo.class);
/**
* <p> [概 要] </p>
* <p> [详 细] </p>
* <p> [备 考] 无。</p>
*
* @param condition
* @param errs
* @return
* @throws PJException
* @see cn.edu.seu.album.common.PJBaseBo#doBiz(cn.edu.seu.album.common.PJCondition, org.apache.struts.action.ActionMessages)
*/
public PJResult doBiz(PJCondition condition, ActionMessages errs)
throws PJException {
log.debug("UploadBo开始");
// 上传结果
UploadRslt rslt = new UploadRslt();
try {
// 上传条件
UploadCondition cond = (UploadCondition) condition;
boolean checkOk = doFileCheck(cond, errs);
if (checkOk) {
rslt = doUpload(cond, errs);
}
} catch (Exception e) {
throw new PJException(e);
}
log.debug("UploadBo结束");
return rslt;
}
/**
* <p> [概 要] </p>
* <p> [详 细] </p>
* <p> [备 考] 无。</p>
*
* @param condition
* @param errs
* @return
* @throws Exception
*/
private UploadRslt doUpload(UploadCondition cond, ActionMessages errs)
throws Exception {
log.debug("doUpload开始");
UploadRslt rslt = new UploadRslt();
boolean ok = true;
// 文件系统内存放图片
String newFileName = doFileSave(cond, errs);
if (errs.isEmpty()) {
// 数据库中存放图片信息
ok = UploadDao.getInstance().doDatabaseInsert(session, cond,
newFileName);
}
rslt.setUploadSuc(ok);
log.debug("doUpload结束");
return rslt;
}
/**
* <p> [概 要] </p>
* <p> [详 细] </p>
* <p> [备 考] 无。</p>
* @param errs
* @param condition
* @return Exception
*/
private String doFileSave(UploadCondition cond, ActionMessages errs)
throws Exception {
log.debug("doFileSave开始");
// 文件拥有者
String owner = cond.getSb().getPerson().getName();
log.debug("文件拥有者:" + owner);
// 文件格式
String type = cond.getPicture().getContentType();
log.debug("文件格式:" + type);
// 文件名尾
String tail = null;
if (type.equalsIgnoreCase("image/gif")) {
tail = ".gif";
} else if (type.equalsIgnoreCase("image/pjpeg")) {
tail = ".jpg";
} else {
tail = ".bmp";
}
log.debug("文件名尾:" + tail);
Calendar now = Calendar.getInstance();
String newFileName = owner + "-"
+ String.valueOf(now.get(Calendar.YEAR)) + "-"
+ String.valueOf(now.get(Calendar.MONTH) + 1) + "-"
+ String.valueOf(now.get(Calendar.DATE)) + "-"
+ String.valueOf(now.get(Calendar.HOUR_OF_DAY)) + "-"
+ String.valueOf(now.get(Calendar.MINUTE)) + "-"
+ String.valueOf(now.get(Calendar.SECOND)) + tail;
// 文件目录地址
String path = cond.getPicAdd();
String realFileName = path + newFileName;
log.debug("文件存放地址为" + realFileName);
// 读入流
InputStream in = cond.getPicture().getInputStream();
// 输出流
OutputStream os = new FileOutputStream(realFileName);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
// 关闭读入输出流
os.close();
in.close();
log.debug("doFileSave结束");
return newFileName;
}
/**
* <p> [概 要] </p>
* <p> [详 细] </p>
* <p> [备 考] 无。</p>
*
* @param cond
* @param errs
*/
private boolean doFileCheck(UploadCondition cond, ActionMessages errs) {
log.debug("doFileCheck开始");
boolean flag = true;
// 上传图片
FormFile picture = cond.getPicture();
// 图片描述信息
String description = cond.getDescription();
// 图片权限
String priv = cond.getPriv();
int fileSize = picture.getFileSize();
if (fileSize == 0) {
errs.add("fileSize", new ActionMessage("upload.fileSize.zero"));
flag = false;
log.debug("文件不存在或者大小为0");
} else if (fileSize > PJConst.MAX_FILE_SIZE) {
errs.add("fileSize", new ActionMessage("upload.fileSize.big"));
flag = false;
log.debug("文件过大,目前" + fileSize + "字节,超过了" + PJConst.MAX_FILE_SIZE + "字节");
}
if (flag) {
String type = picture.getContentType();
if (!((type.equalsIgnoreCase("image/gif") || type
.equalsIgnoreCase("image/pjpeg")) || type
.equals("image/bmp"))) {
errs.add("fileType", new ActionMessage(
"upload.fileType.notPicture"));
flag = false;
}
}
if (flag) {
log.debug("文件Check通过");
} else {
log.debug("文件Check失败");
}
log.debug("doFileCheck结束");
return flag;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -