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

📄 uploadbo.java

📁 此系统为我大家完全开发一个相册管理系统
💻 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 + -