JAVA文件上传工具



/**
 * 图片、文件的上传
 * 
 * @author
 * @date
 * @version 1.0
 */
public class UploadUtils{

  // 上传图片路径
  public static final String KEY_UPLOAD_FILE = "upload-file";


  
  /**
   * 图片上传到服务器配置的路径
   * 
   * @author
   * @param CommonsMultipartFile file
   *          上传的图片文件
   * @param saveFolder
   *          图片保存的文件夹
   * @param fileSaveName
   *          图片保存名称
   * @return Map<String, Object> 返回处理信息
   * @throws IOException
   */
  protected Map<String, Object> imgUpload(CommonsMultipartFile file,String saveFolder,
 String fileSaveName) throws IOException {
 
    Map<String, Object> resultMap = new HashMap<String, Object>();
    
    if (file == null) {
      resultMap.put(this.KEY_STATUS, false);
      resultMap.put(this.KEY_MESSAGE, "文件不存在");
      return resultMap;
    }
    
    if (!ImageUtil.fileIsImage(file)) {
      resultMap.put(this.KEY_STATUS, false);
      resultMap.put(this.KEY_MESSAGE, "您上传的图片无效,请重新上传!");
      return resultMap;
    }
    
    // 服务器相对路径
    String savePath = this.getSavePath(KEY_UPLOAD_FILE) + saveFolder + "/";
    String destFileDirs = request.getSession().getServletContext().getRealPath(savePath);
    destFileDirs = destFileDirs.replaceAll("\\\\", "/");
    File dir = new File(destFileDirs);
    // 服务器端创建目录
    if (!dir.exists()) {
      dir.mkdirs();
    }
    if (fileSaveName == null) {
      fileSaveName = UUID.randomUUID().toString().replace("-", "");
    }
    
    //获取上传文件后缀名
    String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
    
    String destFilePath = destFileDirs + "/" + fileSaveName + fileSuffix;
    File destFile = new File(destFilePath);
    
    file.transferTo(destFile);
    
    // 返回保存文件名称
    resultMap.put(this.KEY_STATUS, true);
    resultMap.put(this.KEY_MESSAGE, savePath + fileSaveName+ fileSuffix);
    return resultMap;
  }
  
  /**
   * 限制图片大小(上传到服务器配置的路径)
   * 
   * @author
   * @param CommonsMultipartFile file
   *          图片文件
   * @param saveFolder
   *          图片保存文件夹
   * @param fileSaveName
   *          图片保存名称
   * @param limitSize
   *          限制图片大小(单位M)
   * @return Map<String, Object> 返回处理信息
   * @throws IOException
   */
  protected Map<String, Object> imgUploadLimitSize(CommonsMultipartFile file,String saveFolder,
      String fileSaveName, int limitSize) throws IOException {
    
    Map<String, Object> resultMap = new HashMap<String, Object>();
    if (file == null) {
      resultMap.put(this.KEY_STATUS, false);
      resultMap.put(this.KEY_MESSAGE, "文件不存在");
      return resultMap;
    }
    if (!ImageUtil.fileIsImage(file)) {
      resultMap.put(this.KEY_STATUS, false);
      resultMap.put(this.KEY_CAPTCHA, "img-no");
      resultMap.put(this.KEY_MESSAGE, "您上传的图片无效,请重新上传!");
      return resultMap;
    }
    long limitSizeBytes = limitSize * 1024 * 1024;// 把单位M转换为bytes
    if (file.getSize() > limitSizeBytes) {
      resultMap.put(this.KEY_STATUS, false);
      resultMap.put(this.KEY_CODE, "img-limit");
      resultMap.put(this.KEY_MESSAGE, "您上传的文件超出限制大小" + limitSize + "M");
      return resultMap;
    }
    
    // 服务器相对路径
    String savePath = this.getSavePath(KEY_UPLOAD_FILE) + saveFolder + "/";
    String destFileDirs =  request.getSession().getServletContext().getRealPath(savePath);
    destFileDirs = destFileDirs.replaceAll("\\\\", "/");
    File dir = new File(destFileDirs);
    // 服务器端创建目录
    if (!dir.exists()) {
      dir.mkdirs();
    }
    if (fileSaveName == null) {
      fileSaveName = UUID.randomUUID().toString().replace("-", "");
    }
    
    //获取上传文件后缀名
    String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
    
    String destFilePath = destFileDirs + "/" + fileSaveName + fileSuffix;
        
    File destFile = new File(destFilePath);
    
    file.transferTo(destFile);
    
    // 返回保存文件名称
    resultMap.put(this.KEY_STATUS, true);
    resultMap.put(this.KEY_MESSAGE, savePath + fileSaveName+ fileSuffix);
    return resultMap;
  }
  
  
  /**
   * 上传文件
   * 
   * @author
   * @param CommonsMultipartFile file
   *          文件
   * @param saveFolder
   *          文件保存文件夹
   * @param fileSaveName
   *          文件保存名称
   * @param limitSize
   *          限制文件大小(单位M)
   * @return Map<String, Object> 返回处理信息
   * @throws IOException
   */
  protected Map<String, Object> uploadFileLimitSize(CommonsMultipartFile file,String saveFolder,
 String fileSaveName, int limitSize) throws IOException {
 
 Map<String, Object> resultMap = new HashMap<String, Object>();
 if (file == null) {
 resultMap.put(this.KEY_STATUS, false);
 resultMap.put(this.KEY_MESSAGE, "文件不存在");
 return resultMap;
 }


 long limitSizeBytes = limitSize * 1024 * 1024;// 把单位M转换为bytes
 if (file.getSize() > limitSizeBytes) {
 resultMap.put(this.KEY_STATUS, false);
 resultMap.put(this.KEY_CODE, "img-limit");
 resultMap.put(this.KEY_MESSAGE, "您上传的文件超出限制大小" + limitSize + "M");
 return resultMap;
 }
 
 // 服务器相对路径
 String savePath = this.getSavePath(KEY_UPLOAD_FILE) + saveFolder + "/";
 String destFileDirs =  request.getSession().getServletContext().getRealPath(savePath);
 destFileDirs = destFileDirs.replaceAll("\\\\", "/");
 File dir = new File(destFileDirs);
 // 服务器端创建目录
 if (!dir.exists()) {
 dir.mkdirs();
 }
 if (fileSaveName == null) {
 fileSaveName = UUID.randomUUID().toString().replace("-", "");
 }
 
 //获取上传文件后缀名
 String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
 
 String destFilePath = destFileDirs + "/" + fileSaveName + fileSuffix;
 
 File destFile = new File(destFilePath);
 
 file.transferTo(destFile);
 
 // 返回保存文件名称
 resultMap.put(this.KEY_STATUS, true);
 resultMap.put(this.KEY_MESSAGE, savePath + fileSaveName+ fileSuffix);
 return resultMap;
  }
  
  
  
  /**
   * 上传文件到系统类路径下
   * 
   * @author
   * @param   CommonsMultipartFile file
   *          文件
   * @param fileName
   *          文件名
   * */
  protected String fileUpload2ClassPath(CommonsMultipartFile file, String fileName)
      throws IOException {
    String path = UploadUtilsController.class.getResource("/").getPath();
    String destFilePath = path + "/" + fileName;
    File destFile = new File(destFilePath);
    file.transferTo(destFile);
    return destFilePath;
  }
  
  
  /**
   * 从上下文获取上传路径
   * 
   * @author
   * @param 文件路径KEY
   * @return 返回路径
   * */
  private String getSavePath(String key) {
    
    return request.getSession().getServletContext().getInitParameter(key);
  }
  
 
  
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值