真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

FileUploadUtil工具類怎么在Java項(xiàng)目中使用

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

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、鄖西網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為鄖西等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

具體內(nèi)容如下

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 {

  //當(dāng)上傳文件超過限制時(shí)設(shè)定的臨時(shí)文件位置,注意是絕對路徑
  private String tempPath = null;

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

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

  //設(shè)置最多只允許在內(nèi)存中存儲的數(shù)據(jù),單位:字節(jié),這個(gè)參數(shù)不要設(shè)置太大
  private int sizeThreshold = 4096;

  //設(shè)置允許用戶上傳文件大小,單位:字節(jié)
  //共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 {

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

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

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

      ServletFileUpload upload = new ServletFileUpload(factory);
      //設(shè)置允許用戶上傳文件大小,單位:字節(jié)
      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();
          //有多個(gè)文件域時(shí),只上傳有文件的
          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 {
              //保存上傳的文件到指定的目錄
              //在下文中上傳文件至數(shù)據(jù)庫時(shí),將對這里改寫
              //沒有指定新文件名時(shí)以原文件名來命名
              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 + "  " + size + "
"); } 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; } /**從路徑中獲取單獨(dú)文件名 * @author * * TODO 要更改此生成的類型注釋的模板,請轉(zhuǎn)至 * 窗口 - 首選項(xiàng) - 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; } /** * 設(shè)置臨時(shí)存貯目錄 */ public void setTmpPath(String tmppath) { this.tempPath = tmppath; } /** * 設(shè)置目標(biāo)目錄 */ public void setDstPath(String dstpath) { this.dstPath = dstpath; } /** * 設(shè)置最大上傳文件字節(jié)數(shù),不設(shè)置時(shí)默認(rèn)10M */ public void setFileMaxSize(long maxsize) { this.sizeMax = maxsize; } /** * 設(shè)置Http 請求參數(shù),通過這個(gè)能數(shù)來獲取文件信息 */ public void setHttpReq(HttpServletRequest httpreq) { this.fileuploadReq = httpreq; } /** * 設(shè)置Http 請求參數(shù),通過這個(gè)能數(shù)來獲取文件信息 */ public void setNewFileName(String filename) { this.newFileName = filename; } /** * 設(shè)置此上傳文件是否是縮略圖文件,這個(gè)參數(shù)主要用于縮略圖命名 */ public void setIsSmalPic(boolean isSmallPic) { this.isSmallPic = isSmallPic; } /** * 設(shè)置Http 請求參數(shù),通過這個(gè)能數(shù)來獲取文件信息 */ public void setPicSeqNo(int seqNo) { this.picSeqNo = seqNo; } }

上述內(nèi)容就是FileUploadUtil工具類怎么在Java項(xiàng)目中使用 ,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章標(biāo)題:FileUploadUtil工具類怎么在Java項(xiàng)目中使用
文章來源:http://weahome.cn/article/pepeec.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部