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 + -
显示快捷键?