java上传文件工具类

这个是之前整理之前所学时与使用java向邮箱发送邮件一块找到的,一起贴出来供大家参考:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import javax.imageio.ImageIO;

import org.apache.struts.upload.FormFile;
import org.apache.struts.util.MessageResources;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class UploadFile {
 
 /**
  * 按照ID和当前时间生成目录
  * @param OrderId
  * @return
  */
 public static String getAbsolutePath(){
  String currYear= new SimpleDateFormat("yyyy").format(new Date());
  String currMonth= new SimpleDateFormat("MM").format(new Date());
  String currDay = new SimpleDateFormat("dd").format(new Date());
  String path = new StringBuffer(currYear).append('/').append(currMonth).append('/').append(currDay).append('/').toString();
  return path;
  }

 /**
  * 上传课程资料
  * @param dir 文件目录
  * @param trueName 文件名称
  * @param formFile FormFile
  * @return String
  * @throws Exception
  */
 public static String uploadFile(int courseId,String dir,FormFile file,MessageResources message) throws Exception {
  String fileName = file.getFileName();
  int i = fileName.lastIndexOf(".");
  String logoFormat = fileName.substring(i + 1);
  int size = file.getFileSize();
  // *************限制文件的上传格式和文件大小*******************
  String fileFormat = message.getMessage("file.fileFormat"); // 文件格式
  int imageSize = Integer.valueOf(message.getMessage("file.fileSize"));// 文件大小
  String format = UploadFile.checkFileExt(logoFormat, fileFormat); // 判断文件格式
  if (format != null && size <= imageSize) {
   fileName = courseId+"_"+String.valueOf(System.currentTimeMillis()) + "." + logoFormat;
   File dirPath = new File(dir + "/" + fileName);// 存储位置
   mkdirIfNotExists(dirPath);
   InputStream streamIn = file.getInputStream(); // 创建读取用户上传文件的对象
   File uploadFile = new File(dir); // 创建把上传数据写到目标文件的对象
   // 判断指定路径是否存在,不存在则创建路径
   if (!uploadFile.exists() || uploadFile == null) {
    uploadFile.mkdirs();
   }
   OutputStream streamOut = new FileOutputStream(dirPath);
   int bytesRead = 0;
   byte[] buffer = new byte[8192];
   while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {
    streamOut.write(buffer, 0, bytesRead);
   }
   streamOut.close();
   streamIn.close();
   file.destroy();
   return fileName;
  }else{
   return null;
  }
 }
 
 /**
  * 上传文章附件
  * @param dir
  * @param file
  * @param message
  * @return
  * @throws Exception
  */
 public static String uploadFile(String dir,FormFile file,MessageResources message) throws Exception {
  String fileName = file.getFileName();
  int i = fileName.lastIndexOf(".");
  String logoFormat = fileName.substring(i + 1);
  int size = file.getFileSize();
  // *************限制文件的上传格式和文件大小*******************
  String fileFormat = message.getMessage("file.fileFormat"); // 文件格式
  int imageSize = Integer.valueOf(message.getMessage("file.fileSize"));// 文件大小
  String format = UploadFile.checkFileExt(logoFormat, fileFormat); // 判断文件格式
  if (format != null && size <= imageSize) {
   fileName = String.valueOf(System.currentTimeMillis()) + "." + logoFormat;
   File dirPath = new File(dir + "/" + fileName);// 存储位置
   mkdirIfNotExists(dirPath);
   InputStream streamIn = file.getInputStream(); // 创建读取用户上传文件的对象
   File uploadFile = new File(dir); // 创建把上传数据写到目标文件的对象
   // 判断指定路径是否存在,不存在则创建路径
   if (!uploadFile.exists() || uploadFile == null) {
    uploadFile.mkdirs();
   }
   OutputStream streamOut = new FileOutputStream(dirPath);
   int bytesRead = 0;
   byte[] buffer = new byte[8192];
   while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {
    streamOut.write(buffer, 0, bytesRead);
   }
   streamOut.close();
   streamIn.close();
   file.destroy();
   return fileName;
  }else{
   return null;
  }
 }
 
 
 public static String uploadFile1(String dir,FormFile file,MessageResources message) throws Exception {
  String fileName = file.getFileName();
  String s=UUID.randomUUID().toString();
  int i = fileName.lastIndexOf(".");
  String logoFormat = fileName.substring(i + 1);
  int size = file.getFileSize();
  // *************限制文件的上传格式和文件大小*******************
  String fileFormat = message.getMessage("file.fileFormat"); // 文件格式
  int imageSize = Integer.valueOf(message.getMessage("file.fileSize"));// 文件大小
  String format = UploadFile.checkFileExt(logoFormat, fileFormat); // 判断文件格式
  if (format != null && size <= imageSize) {
   fileName = String.valueOf(System.currentTimeMillis()+s) + "." + logoFormat;
   File dirPath = new File(dir + "/" + fileName);// 存储位置
   mkdirIfNotExists(dirPath);
   InputStream streamIn = file.getInputStream(); // 创建读取用户上传文件的对象
   File uploadFile = new File(dir); // 创建把上传数据写到目标文件的对象
   // 判断指定路径是否存在,不存在则创建路径
   if (!uploadFile.exists() || uploadFile == null) {
    uploadFile.mkdirs();
   }
   OutputStream streamOut = new FileOutputStream(dirPath);
   int bytesRead = 0;
   byte[] buffer = new byte[8192];
   while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {
    streamOut.write(buffer, 0, bytesRead);
   }
   streamOut.close();
   streamIn.close();
   file.destroy();
   return fileName;
  }else{
   return null;
  }
 }
 
 
 /**
  * @param 文件扩展名
  * @param permitFormatsConfig 文件类型
  * @return String 文件匹配类型
  */
 public static String checkFileExt(String type, String permitFormatsConfig) {
  String[] formats = permitFormatsConfig.split(";");
  for (int i = 0; i < formats.length; i++) {
   if (type.toLowerCase().endsWith(formats[i].toLowerCase())) {
    return formats[i];
   }
  }
  return null;
 }
 public static File mkdirIfNotExists(File file) {
  if (file.exists()) {
   return file;
  }
  if (file.isDirectory() && file.mkdirs()) {
   return file;
  }
  File parentDirectory = file.getParentFile();
  if (parentDirectory.exists()) {
   return file;
  } else if (parentDirectory.mkdirs()) {
   return file;
  }
  throw new java.lang.RuntimeException(
    "Failed to make some necessary parent directories. Please trying.");
 }
 
 /**
  * 上传图片,并获得缩小图片
  * 图片大小交由显示页面控制 后台将不负责修改图像大小
  * @param picDir
  * @param file
  * @param message
  * @param width
  * @return
  * @throws Exception
  */
 public static String uploadFile(String picDir, FormFile file,
   MessageResources message, int width,int height) throws Exception {
  String fileName = file.getFileName();
  int ff = fileName.lastIndexOf(".");
  ImageScale imageScale = new ImageScale();
  String logoFormat = fileName.substring(ff + 1);
  int size = file.getFileSize();
  // *************限制文件的上传格式和文件大小*******************
  String fileFormat = message.getMessage("file.imageFormat"); // 文件格式
  int imageSize = Integer.valueOf(message
    .getMessage("file.imageSize"));// 文件大小
  String format = UploadFile.checkFileExt(logoFormat, fileFormat); // 判断文件格式
  if (format != null && size <= imageSize) {
   fileName = String.valueOf(System.currentTimeMillis()) + "." + logoFormat;
   File dirPath = new File(picDir + "/" + fileName);
   mkdirIfNotExists(dirPath);// 存储位置
   InputStream stream = file.getInputStream();
   OutputStream bos = new FileOutputStream(dirPath);
   BufferedImage Bi = ImageIO.read(file.getInputStream());
   bos = new FileOutputStream(dirPath);
   //图片大小交由显示页面控制 后台将不负责修改图像大小
   /*if (Bi.getWidth() > width || Bi.getHeight() > height) {
    Bi = imageScale.imageZoomOut(Bi, width, height);
    ImageIO.write(Bi, logoFormat, dirPath);
   } else {*/
    ImageIO.write(Bi, logoFormat, dirPath);
   //}
   bos.close();
   stream.close();
   file.destroy();
   return fileName;
  } else {
   file.destroy();
   return null;
  }
 }
 
 /**
  * 上传图片,并获得缩小图片
  * @param picDir
  * @param file
  * @param message
  * @param width
  * @return
  * @throws Exception
  */
 public static String uploadFile(String picDir, FormFile file,MessageResources message, int width) throws Exception {
  String fileName = file.getFileName();
  int ff = fileName.lastIndexOf(".");
  ImageScale imageScale = new ImageScale();
  String logoFormat = fileName.substring(ff + 1);
  int size = file.getFileSize();
  // *************限制文件的上传格式和文件大小*******************
  String fileFormat = message.getMessage("file.imageFormat"); // 文件格式
  int imageSize = Integer.valueOf(message.getMessage("file.imageSize"));// 文件大小
  String format = UploadFile.checkFileExt(logoFormat, fileFormat); // 判断文件格式
  if (format != null && size <= imageSize) {
   fileName = String.valueOf(System.currentTimeMillis()) + "."+ logoFormat;
   File dirPath = new File(picDir + "/" + fileName);// 存储位置
   mkdirIfNotExists(dirPath);
   InputStream stream = file.getInputStream();
   OutputStream bos = new FileOutputStream(dirPath);
   BufferedImage Bi = ImageIO.read(file.getInputStream());
   if (Bi.getWidth() > width || Bi.getHeight() > width) {
    Bi = imageScale.imageZoomOut(Bi, width, width);
    ImageIO.write(Bi, logoFormat, dirPath);
   } else {
    ImageIO.write(Bi, logoFormat, dirPath);
   }
   bos.close();
   stream.close();
   file.destroy();
   dirPath = new File(picDir + "/hoy_" + fileName);
   bos = new FileOutputStream(dirPath);
   if (Bi.getWidth() > 142 || Bi.getHeight() > 60) {
    Bi = imageScale.imageZoomOut(Bi, 142, 60);
    ImageIO.write(Bi, logoFormat, dirPath);
   } else {
    ImageIO.write(Bi, logoFormat, dirPath);
   }
   bos.close();
   stream.close();
   file.destroy();
   return fileName;
  } else {
   file.destroy();
   return null;
  }
 }
}
原文地址:https://www.cnblogs.com/dtj007/p/5113810.html