zoukankan      html  css  js  c++  java
  • 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;
      }
     }
    }
  • 相关阅读:
    WinFrom 经典登录窗体(转)
    .Net 反射牛刀小试
    WCF和Entity framework 发现的性能问题(转)
    扩展方法(C# 编程指南)
    如何把Access中数据导入Mysql中 (转)
    MD5 Message Digest
    .Net 集合排序
    test
    如何使自己的程序只运行一次(转)
    WCF传较大数据(转)
  • 原文地址:https://www.cnblogs.com/dtj007/p/5113810.html
Copyright © 2011-2022 走看看