图片上传到服务器

/**
* 上传图片(员工照片)
* @return
* @throws Exception
*/
public String loadImageToServer(String filePath,String serverPath) throws Exception {
//String filePath=this.filePath;
//String serverPath=ServletActionContext.getServletContext().getRealPath("/res_base/dxs_gov_cn_www/default/common/personImg");
    String resultPath = "";          //上传后图片所在的路径
    String imageName = "";     //上传后图片文件名
    String fileType ="";    //上传后图片类型
    FileOutputStream out = null;     //文件输出流
    try {                               //验证图片上传的格式是否正确
       File f = new File(filePath);
        if (!f.isFile())
          throw new Exception(f +" 不是图片文件!");
         //addActionError("");
     if (f != null && f.exists()) {          //这里的ImageIO属于java工厂类,在工厂类class里面,调用的System.gc(),频繁调用会造成dump,需要考虑优化
        BufferedImage image = ImageIO.read(f); // 读入文件
        if (image != null) {
        BufferedImage tag = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);  //构造一个类型为预定义图像类型之一的 BufferedImage
           tag.getGraphics().drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);                     //绘制所需要尺寸大小的图片
        /*
         * 以下生成图片上传后在服务器上的新路径
         */
        int lastLength = filePath.lastIndexOf(".");
        Date date = new Date(System.currentTimeMillis());
        String strDate = new SimpleDateFormat("yyyyMMddhhmmss").format(date);
        int random = (int)(Math.random()*99);
        imageName = strDate+ random;                          //以系统时间来随机的创建图片文件名 ,防止传上来的图片名称相同
        fileType = filePath.substring(lastLength);              //获取上传图片的类型
        resultPath = serverPath +"site"+ imageName + fileType;
        /*
         * 进行图片的绘制
         */
        out = new FileOutputStream(resultPath);
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
        JPEGEncodeParam param =
        encoder.getDefaultJPEGEncodeParam(tag);
        param.setQuality(0.50f, true); //95%图像      
        param.setDensityUnit(1);                //像素尺寸单位.像素/英寸    
        param.setXDensity(300);                  //水平分辨率      
        param.setYDensity(300);                 //垂直分辨率
        encoder.setJPEGEncodeParam(param);
        encoder.encode(tag);
        tag = null;
      }
     }

     f = null;

    } catch (Exception ex) {
    ex.printStackTrace();
    } finally {
    out.close();
    out = null;
    }
   
    return resultPath;
   }

猜你喜欢

转载自1148130696.iteye.com/blog/1726202
今日推荐