zoukankan      html  css  js  c++  java
  • 使用SpringMVC MultipartHttpServletRequest实现文件上传功能

    前几天在处理文件上传的时候使用了下MultipartHttpServletRequest 觉得很好用,也非常方便,所以在这里记录下,这里主要实现的是用户使用Form方式上传图片,然后产生缩略图,当然这里如

    果有需要也可以把获取到的Byte内容,存入公司或者自己的服务器里面,视需求而定哈。

    比较常见的文件上传组件有Commons FileUpload(http://jakarta.apache.org/commons/fileupload/a>)和COS FileUpload(http://www.servlets.com/cos),spring已经完全集

    成了这两种组件,这里我们选择Commons FileUpload。 

    由于POST一个包含文件上传的Form会以multipart/form-data请求发送给服务器,必须明确告诉DispatcherServlet如何处理MultipartRequest。首先在

    spring-mvc.xml配置文件中声明一个MultipartResolver:

    这样一旦某个Request是一个MultipartRequest,它就会首先被MultipartResolver处理,然后再转发相应的Controller。 

    在相关上传文件接口中,将HttpServletRequest转型为MultipartHttpServletRequest,就能非常方便地得到文件名和文件内容,然后可以将文件内容

    转为IO流进行存储或显示查看:

    JavaCode部分:

    1.获取上传详细内容

    2.生成缩略图

    1. public static void createPreviewImage(String srcFile, String destFile) {   
    2.         try {   
    3.             File fi = new File(srcFile); // src   
    4.             File fo = new File(destFile); // dest   
    5.             BufferedImage bis = ImageIO.read(fi);   
    6.   
    7.             int w = bis.getWidth();   
    8.             int h = bis.getHeight();   
    9.             double scale = (double) w / h;   
    10.             int nw = IMAGE_SIZE; // final int IMAGE_SIZE = 120;   
    11.             int nh = (nw * h) / w;   
    12.             if (nh > IMAGE_SIZE) {   
    13.                 nh = IMAGE_SIZE;   
    14.                 nw = (nh * w) / h;   
    15.             }   
    16.             double sx = (double) nw / w;   
    17.             double sy = (double) nh / h;   
    18.   
    19.             transform.setToScale(sx, sy);   
    20.             AffineTransformOp ato = new AffineTransformOp(transform, null);   
    21.             BufferedImage bid = new BufferedImage(nw, nh,   
    22.                     BufferedImage.TYPE_3BYTE_BGR);   
    23.             ato.filter(bis, bid);   
    24.             ImageIO.write(bid, " jpeg ", fo);   
    25.         } catch (Exception e) {   
    26.             e.printStackTrace();   
    27.             throw new RuntimeException(   
    28.                     " Failed in create preview image. Error:  "  
    29.                             + e.getMessage());   
    30.         }   
    31.     }  

     以上就是用户在页面通过Form方式提交文件上传请求,然后MVC配置MultipartResolver拦截请求,使用MultipartHttpServletRequest将请求文件进行处理的相关步骤,非常的方便,写在这里

     留作笔记,MVC需要学习的东西还是有很多呀!!

  • 相关阅读:
    HDU X mod f(x)(题解注释)
    hdu 3555 Bomb(不要49,数位DP)
    hdu 2089 不要62(入门数位dp)
    暑假练习赛 003 B Chris and Road
    暑假练习赛 003 F Mishka and trip
    暑假练习赛 003 A Spider Man
    linux:关于Linux系统中 CPU Memory IO Network的性能监测
    linux TCP数据包重传过程----小结
    linux TCP头部的构造的简单分析
    linux TCP数据包封装在SKB的过程分析
  • 原文地址:https://www.cnblogs.com/Bengi/p/6801771.html
Copyright © 2011-2022 走看看