栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java FileUploadUtil工具类详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java FileUploadUtil工具类详解

本文实例为大家分享了FileUploadUtil工具类的具体代码,供大家参考,具体内容如下

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;
  }

  
  public boolean Upload(){
    DiskFileItemFactory factory = new DiskFileItemFactory();

    try {

      //如果没有上传目的目录,则创建它
      FileUtil.makeDirectory(dstPath+"/ddd");
      
      //如果没有临时目录,则创建它
      FileUtil.makeDirectory(tempPath+"/ddd");
      

      //上传项目只要足够小,就应该保留在内存里。
      //较大的项目应该被写在硬盘的临时文件上。
      //非常大的上传请求应该避免。
      //限制项目在内存中所占的空间,限制最大的上传请求,并且设定临时文件的位置。

      //设置最多只允许在内存中存储的数据,单位:字节
      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 + "  " + 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; } 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; } public void setFileMaxSize(long maxsize) { this.sizeMax = maxsize; } public void setHttpReq(HttpServletRequest httpreq) { this.fileuploadReq = httpreq; } public void setNewFileName(String filename) { this.newFileName = filename; } public void setIsSmalPic(boolean isSmallPic) { this.isSmallPic = isSmallPic; } public void setPicSeqNo(int seqNo) { this.picSeqNo = seqNo; } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/144445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号