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

📄 myfileupload.java

📁 一个基于Java的新闻发布系统
💻 JAVA
字号:
package com.hope.common.util;


import java.util.*;
import java.io.*;
import org.apache.commons.fileupload.*;
import javax.servlet.http.*;

public class MyFileUpload {
  private static final String CONTENT_TYPE = "text/html; charset=GBK";

  private int cacheSize = 4 * 1024;
  private long fileMaxSize = 5 * 1024 * 1024;
  private String tempDir = null;
  private String fileSaveDir = null;
  private HttpServletRequest request = null;
  private HttpServletResponse response = null;
  private String[] invalidFileType = {
      ".jsp", ".java", ".com", ".exe"};
  private HashMap forms = new HashMap();
  private ArrayList fileName = new ArrayList();
  private ArrayList fileSaveName = new ArrayList();

  public MyFileUpload(HttpServletRequest request, HttpServletResponse response) {
    this.request = request;
    this.response = response;
    this.response.setContentType(CONTENT_TYPE);
  }


  public MyFileUpload(HttpServletRequest request, HttpServletResponse response,
                      long fileMaxSize, String fileSaveDir, String tempDir) {
    this(request, response);
    this.fileMaxSize = fileMaxSize;
    this.fileSaveDir = fileSaveDir;
    this.tempDir = tempDir;
  }

  /**
   * 设置上传文件缓存大小(单位:字节),默认为4 * 1024
   * @param cacheSize int
   */
  public void setCacheSize(int cacheSize) {
    this.cacheSize = cacheSize;
  }

  /**
   * 设置上传文件大小(单位:字节),默认为5 * 1024 * 1024
   * @param fileMaxSize long
   */
  public void setFileMaxSize(long fileMaxSize) {
    this.fileMaxSize = fileMaxSize;
  }

  /**
   * 设置上传文件保存目录,绝对路径。
   * @param fileSaveDir String
   */
  public void setFileSaveDir(String fileSaveDir) {
    this.fileSaveDir = fileSaveDir;
  }

  /**
   * 设置上传文件临时目录,绝对路径。
   * @param tempDir String
   */
  public void setTempDir(String tempDir) {
    this.tempDir = tempDir;
  }

  /**
   * 设置上传文件拒绝的文件扩展名,默认为:<br>
   * String[] invalidFileType = {".jsp", ".java", ".com", ".exe"}
   * 如上传文件的扩展名在此范围内,则该文件的fileSaveName为“no_match”
   * @param invalidFileType String[]
   */
  public void setInvalidFileType(String[] invalidFileType) {
    this.invalidFileType = invalidFileType;
  }

  /**
   * 进行文件上传处理。处理的文件保存在fileName,fileSaveName中,分别保存原文件名和保存文
   * 件名。其它form的值以“form_name/form_value”的形式保存在forms中。
   * @throws SizeLimitExceededException
   * @throws FileUploadException
   * @throws Exception
   */
  public void upload() throws FileUploadBase.SizeLimitExceededException,
      FileUploadException, Exception {
    DiskFileUpload fu = new DiskFileUpload();
    fu.setSizeMax(this.fileMaxSize);
    fu.setSizeThreshold(this.cacheSize);
    fu.setRepositoryPath(this.tempDir);
    List fileItemList = null;
    fileItemList = fu.parseRequest(this.request);
    Iterator iter = fileItemList.iterator();
    while (iter.hasNext()) {
      FileItem item = (FileItem) iter.next();
      if (!item.isFormField()) {
        String name = this.getFileName(item.getName());
        long size = item.getSize();
        if (name == null || name.length() == 0 || size == 0) {
          fileName.add(name);
          fileSaveName.add("no_file");
          continue;
        }
        if (!isValidType(name)) {
          fileName.add(name);
          fileSaveName.add("no_match");
          continue;
        }
        String saveName = getFileName(name, size, name.length());
        item.write(new File(fileSaveDir + saveName));
        fileName.add(name);
        fileSaveName.add(saveName);
      }
      else {
        if (forms.get(item.getFieldName()) == null ||
            ( (String) forms.get(item.getFieldName())).length() == 0) {
          forms.put(item.getFieldName(), item.getString());
        }
        else {
          forms.put(item.getFieldName(),
                    ( (String) forms.get(item.getFieldName())) + "," +
                    item.getString());
        }
      }
    }
  }

  private String getFileName(String fileName) {
    return fileName.substring(fileName.lastIndexOf("\\") + 1);
  }

  private boolean isValidType(String fileName) {
    for (int i = 0; i < invalidFileType.length; i++) {
      if (fileName.endsWith(invalidFileType[i])) {
        return false;
      }
    }
    return true;
  }

  /**
   * 返回上传文件列表,分别保存原文件名。
   * @return ArrayList
   */
  public ArrayList getFileName() {
    return this.fileName;
  }

  public ArrayList getFileSaveName() {
    return this.fileSaveName;
  }

  public HashMap getForms() {
    return this.forms;
  }

  private String getFileName(String fileName, long size, int len) {
    String[] strArr = {
        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
        "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B",
        "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
        "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3",
        "4", "5", "6", "7", "8", "9"
    };
    int length = 20;
    String tmpStr = "";
    Random rand = new Random();
    for (int i = 0; i < length; i++) {
      tmpStr += strArr[rand.nextInt(62)];
    }
    tmpStr += "_" + len + "_" + size;
    tmpStr += fileName.substring(fileName.lastIndexOf("."));
    return tmpStr;
  }

}

⌨️ 快捷键说明

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