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

📄 myfileupload.java~1~

📁 一个基于Java的新闻发布系统
💻 JAVA~1~
字号:
package com.hope.speedway.shared;
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 + -