multifileupload.java

来自「cwbbs 云网论坛源码」· Java 代码 · 共 193 行

JAVA
193
字号
package com.redmoon.forum;import cn.js.fan.util.ErrMsgException;import java.util.Vector;import java.util.Iterator;import com.redmoon.kit.util.FileInfo;import com.redmoon.kit.util.FileUpload;import cn.js.fan.util.StrUtil;import com.redmoon.forum.person.UserDb;import cn.js.fan.util.FTPUtil;import java.io.IOException;import com.cloudwebsoft.framework.util.LogUtil;public class MultiFileUpload extends FileUpload {    Vector attachments = new Vector();    boolean isAttachmentsSeparated = false;    private FileInfo upFileInfo = null;     public static final int DISKSPACEUSED_TOO_LARGE = -1;    public static final int WRITE_ATTACHMENT_SUCCEED = 1;    public MultiFileUpload() {    }    public FileInfo getUpFileInfo() {        if (!isAttachmentsSeparated) {            separateAttachmentsAndUpfile();        }        return upFileInfo;    }        public void separateAttachmentsAndUpfile() {                Iterator ir = files.iterator();        while (ir.hasNext()) {            FileInfo fi = (FileInfo) ir.next();            if (fi.fieldName.indexOf("attachment") != -1) {                                                attachments.addElement(fi);            }        }        ir = attachments.iterator();        while (ir.hasNext()) {            FileInfo fi = (FileInfo) ir.next();            files.remove(fi);        }                String attachFileName = StrUtil.getNullString(getFieldValue("filename")).                                trim();        boolean isDdxc = false;        String sisDdxc = StrUtil.getNullString(getFieldValue("isDdxc"));                if (sisDdxc.equals("true"))            isDdxc = true;        if (!attachFileName.equals("")) {            if (!isDdxc) {                ir = attachments.iterator();                while (ir.hasNext()) {                    FileInfo fi = (FileInfo) ir.next();                    if (fi.fieldName.equals(attachFileName)) {                                                attachments.remove(fi);                        upFileInfo = fi;                        break;                    }                }            } else {                                 if (attachFileName.equals(""))                    return;                String strIndex = attachFileName.substring("attachment".length(),                        attachFileName.length());                int index = Integer.parseInt(strIndex);                String[] attachFileNames = getFieldValues("attachFileName");                String[] clientFilePaths = getFieldValues("clientFilePath");                String name = getUploadFileName(clientFilePaths[index]);                upFileInfo = new FileInfo();                upFileInfo.diskName = attachFileNames[index];                upFileInfo.name = name;                upFileInfo.fieldName = attachFileName;                upFileInfo.ext = getFileExt(attachFileNames[index]);            }        }        isAttachmentsSeparated = true;    }    public Vector getAttachments() {        if (!isAttachmentsSeparated)            separateAttachmentsAndUpfile();        return attachments;    }    public Vector getFiles() {        if (!isAttachmentsSeparated)            separateAttachmentsAndUpfile();        return files;    }        public void writeFile(boolean isRandName) {        Vector files = getFiles();        int size = files.size();        if (size == 0)            return;        java.util.Enumeration e = files.elements();        while (e.hasMoreElements()) {            FileInfo fi = (FileInfo) e.nextElement();            if (!isRandName)                fi.write(savePath, "");            else                 fi.write(savePath, getRandName() + "." + fi.getExt());        }    }    public int writeAttachment(boolean isRandName) throws ErrMsgException {                Privilege privilege = new Privilege();        if (!privilege.canUploadAttachment(request))            return DISKSPACEUSED_TOO_LARGE;        Vector files = getAttachments();        int size = files.size();        if (size == 0)            return WRITE_ATTACHMENT_SUCCEED;        Config cfg = Config.getInstance();        boolean isFtpUsed = cfg.getBooleanProperty("forum.ftpUsed");        FTPUtil ftp = new FTPUtil();        if (isFtpUsed) {            boolean retFtp = ftp.connect(cfg.getProperty(                    "forum.ftpServer"),                                         cfg.getIntProperty("forum.ftpPort"),                                         cfg.getProperty("forum.ftpUser"),                                         cfg.getProperty("forum.ftpPwd"), true);            if (!retFtp) {                ftp.close();                throw new ErrMsgException(ftp.getReplyMessage());            }        }        int allSize = 0;        try {            java.util.Enumeration e = files.elements();            while (e.hasMoreElements()) {                FileInfo fi = (FileInfo) e.nextElement();                if (isFtpUsed) {                    try {                        String fname = "";                        if (!isRandName)                            fname = fi.getName();                        else {                            fname = FileUpload.getRandName() + "." +                                    fi.getExt();                        }                        fi.diskName = fname;                        ftp.storeFile(MsgDb.getCurAttVisualPath() + "/" +                                      fname, fi.getTmpFilePath());                    } catch (IOException e1) {                        LogUtil.getLog(getClass()).error(                                "AddNewWE: storeFile - " +                                e1.getMessage());                    }                } else {                    if (!isRandName)                        fi.write(savePath, "");                    else {                         String newfilename = getRandName();                        fi.write(savePath,                                 newfilename + "." + fi.getExt());                    }                }                allSize += fi.getSize();            }        } finally {            if (isFtpUsed) {                ftp.close();            }        }                UserDb ud = new UserDb();        ud = ud.getUser(privilege.getUser(request));        ud.setDiskSpaceUsed(ud.getDiskSpaceUsed() + allSize);        ud.save();        return WRITE_ATTACHMENT_SUCCEED;    }}

⌨️ 快捷键说明

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