91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

FileUploadUtil工具類怎么在Java項目中使用

發布時間:2020-12-04 15:38:47 來源:億速云 閱讀:179 作者:Leah 欄目:編程語言

本篇文章為大家展示了FileUploadUtil工具類怎么在Java項目中使用 ,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

具體內容如下

package com.gootrip.util;

import java.io.File;
import java.util.*;
import org.apache.commons.fileupload.*;
import javax.servlet.http.HttpServletRequest;
import java.util.regex.Pattern;
import java.io.IOException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import java.util.regex.Matcher;

public class FileUploadUtil {

  //當上傳文件超過限制時設定的臨時文件位置,注意是絕對路徑
  private String tempPath = null;

  //文件上傳目標目錄,注意是絕對路徑
  private String dstPath = null;

  //新文件名稱,不設置時默認為原文件名
  private String newFileName = null;
  //獲取的上傳請求
  private HttpServletRequest fileuploadReq = null;

  //設置最多只允許在內存中存儲的數據,單位:字節,這個參數不要設置太大
  private int sizeThreshold = 4096;

  //設置允許用戶上傳文件大小,單位:字節
  //共10M
  private long sizeMax = 10485760;

  //圖片文件序號
  private int picSeqNo = 1;

  private boolean isSmallPic = false;

  public FileUploadUtil(){
  }

  public FileUploadUtil(String tempPath, String destinationPath){
    this.tempPath = tempPath;
    this.dstPath = destinationPath;
  }

  public FileUploadUtil(String tempPath, String destinationPath, HttpServletRequest fileuploadRequest){
    this.tempPath  = tempPath;
    this.dstPath = destinationPath;
    this.fileuploadReq = fileuploadRequest;
  }

  /** 文件上載
   * @return true —— success; false —— fail.
   */
  public boolean Upload(){
    DiskFileItemFactory factory = new DiskFileItemFactory();

    try {

      //如果沒有上傳目的目錄,則創建它
      FileUtil.makeDirectory(dstPath+"/ddd");
      /*if (!FileUtil.makeDirectory(dstPath+"/ddd")) {
        throw new IOException("Create destination Directory Error.");
      }*/
      //如果沒有臨時目錄,則創建它
      FileUtil.makeDirectory(tempPath+"/ddd");
      /*if (!FileUtil.makeDirectory(tempPath+"/ddd")) {
        throw new IOException("Create Temp Directory Error.");
      }*/

      //上傳項目只要足夠小,就應該保留在內存里。
      //較大的項目應該被寫在硬盤的臨時文件上。
      //非常大的上傳請求應該避免。
      //限制項目在內存中所占的空間,限制最大的上傳請求,并且設定臨時文件的位置。

      //設置最多只允許在內存中存儲的數據,單位:字節
      factory.setSizeThreshold(sizeThreshold);
      // the location for saving data that is larger than getSizeThreshold()
      factory.setRepository(new File(tempPath));

      ServletFileUpload upload = new ServletFileUpload(factory);
      //設置允許用戶上傳文件大小,單位:字節
      upload.setSizeMax(sizeMax);

      List fileItems = upload.parseRequest(fileuploadReq);
      // assume we know there are two files. The first file is a small
      // text file, the second is unknown and is written to a file on
      // the server
      Iterator iter = fileItems.iterator();

      // 正則匹配,過濾路徑取文件名
      String regExp = ".+\\\\(.+)$";

      // 過濾掉的文件類型
      String[] errorType = {".exe", ".com", ".cgi", ".asp", ".php", ".jsp"};
      Pattern p = Pattern.compile(regExp);
      while (iter.hasNext()) {
        System.out.println("++00++====="+newFileName);
        FileItem item = (FileItem) iter.next();
        //忽略其他不是文件域的所有表單信息
        if (!item.isFormField()) {
          String name = item.getName();
          System.out.println("++++====="+name);
          long size = item.getSize();
          //有多個文件域時,只上傳有文件的
          if ((name == null || name.equals("")) && size == 0)
            continue;
          Matcher m = p.matcher(name);
          boolean result = m.find();
          if (result) {
            for (int temp = 0; temp < errorType.length; temp++) {
              if (m.group(1).endsWith(errorType[temp])) {
                throw new IOException(name + ": Wrong File Type");
              }
            }
            String ext = "."+FileUtil.getTypePart(name);
            try {
              //保存上傳的文件到指定的目錄
              //在下文中上傳文件至數據庫時,將對這里改寫
              //沒有指定新文件名時以原文件名來命名
              if (newFileName == null || newFileName.trim().equals(""))
              {
                item.write(new File(dstPath +"/"+ m.group(1)));
              }
              else
              {
                String uploadfilename = "";
                if (isSmallPic)
                {
                  uploadfilename = dstPath +"/"+ newFileName+"_"+picSeqNo+"_small"+ext;
                }
                else
                {
                  uploadfilename = dstPath +"/"+ newFileName+"_"+picSeqNo+ext;
                }
                //生成所有未生成的目錄
                System.out.println("++++====="+uploadfilename);
                FileUtil.makeDirectory(uploadfilename);
                //item.write(new File(dstPath +"/"+ newFileName));
                item.write(new File(uploadfilename));
              }
              picSeqNo++;
              //out.print(name + "&nbsp;&nbsp;" + size + "<br>");
            } catch (Exception e) {
              //out.println(e);
              throw new IOException(e.getMessage());
            }
          } else {
            throw new IOException("fail to upload");
          }
        }
      }
    } catch (IOException e) {
      System.out.println(e);
    } catch (FileUploadException e) {
      System.out.println(e);
    }
    return true;
  }

  /**從路徑中獲取單獨文件名
   * @author
   *
   * TODO 要更改此生成的類型注釋的模板,請轉至
   * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
   */
  public String GetFileName(String filepath)
  {
    String returnstr = "*.*";
    int length    = filepath.trim().length();

    filepath = filepath.replace('\\', '/');
    if(length >0)
    {
      int i = filepath.lastIndexOf("/");
      if (i >= 0)
      {
        filepath = filepath.substring(i + 1);
        returnstr = filepath;
      }
    }
    return returnstr;
  }
  /**
   * 設置臨時存貯目錄
   */
  public void setTmpPath(String tmppath)
  {
    this.tempPath = tmppath;
  }
  /**
   * 設置目標目錄
   */
  public void setDstPath(String dstpath) {
    this.dstPath = dstpath;
  }
  /**
   * 設置最大上傳文件字節數,不設置時默認10M
   */
  public void setFileMaxSize(long maxsize) {
    this.sizeMax = maxsize;
  }
  /**
   * 設置Http 請求參數,通過這個能數來獲取文件信息
   */
  public void setHttpReq(HttpServletRequest httpreq) {
    this.fileuploadReq = httpreq;
  }
  /**
   * 設置Http 請求參數,通過這個能數來獲取文件信息
   */
  public void setNewFileName(String filename) {
    this.newFileName = filename;
  }

  /**
   * 設置此上傳文件是否是縮略圖文件,這個參數主要用于縮略圖命名
   */
  public void setIsSmalPic(boolean isSmallPic) {
    this.isSmallPic = isSmallPic;
  }

  /**
   * 設置Http 請求參數,通過這個能數來獲取文件信息
   */
  public void setPicSeqNo(int seqNo) {
    this.picSeqNo = seqNo;
  }


}

上述內容就是FileUploadUtil工具類怎么在Java項目中使用 ,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陕西省| 龙里县| 甘谷县| 东平县| 卓资县| 县级市| 四川省| 修武县| 布尔津县| 南涧| 松江区| 文安县| 阜南县| 扎赉特旗| 灵宝市| 塘沽区| 满洲里市| 连州市| 光山县| 古蔺县| 边坝县| 沙田区| 新营市| 黎城县| 迁西县| 滕州市| 河池市| 融水| 裕民县| 白朗县| 水富县| 浪卡子县| 崇义县| 汨罗市| 中江县| 江陵县| 长海县| 东丽区| 潼关县| 湘潭市| 阿城市|