springMVC实现文件上传

1、 通过commons-fileupload来实现。

2、 配置springmvc文件上传解析器

    <!-- 文件上传解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"></property>
        <!-- 最大上传文件大小 -->
        <property name="maxUploadSize" value="104857600"></property>
        <!-- 缓存大小 -->
        <property name="maxInMemorySize" value="40960"></property>
    </bean>

3、 jsp页面

    <form action="springmvc/upload.do" enctype="multipart/form-data" method="post">
        file:<input type="file" name="file"/><input type="submit" value="上传"/>
    </form>

4、 Controller

    @RequestMapping("/upload")
    public String fileUpload(@RequestParam("file") CommonsMultipartFile file, 
            HttpServletRequest req) throws IOException {
        // 获取文件名
        System.out.println(file.getOriginalFilename());
        // 获取上传文件的路径
        String path = req.getRealPath("/upload");
        InputStream is = file.getInputStream();
        OutputStream os = new FileOutputStream(new File(path, file.getOriginalFilename()));
        int len = 0;
        byte[] buffer = new byte[400];
        while((len = is.read(buffer)) != -1) {
            os.write(buffer, 0, len);
        }
        os.close();
        is.close();
        return "/index.jsp";
    }

5、 批量上传

Jsp页面

    <form action="springmvc/batchUpload.do" enctype="multipart/form-data" method="post">
    <div class="fileDiv">
        file:<input type="file" name="file"/><input type="button" id="btn" value="添加"/><br/>
    </div>
        <input type="submit" value="上传"/>
    </form>
    
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
        $("#btn").click(function() {
            var field = "<p>file:<input type='file' name='file'/><input type='button' onclick='del(this);' value='删除'/></p>";
            $(".fileDiv").append(field);
        });
        
        function del(obj) {
            $(obj).parent().remove();
        }
    </script>

6、 Controller

 

    @RequestMapping("/batchUpload")
    public String fileBatchUpload(@RequestParam("file") CommonsMultipartFile file[], 
            HttpServletRequest req) throws IOException {
        // 获取上传文件的路径
        String path = req.getRealPath("/upload");
        for (int i = 0; i < file.length; i++) {
            InputStream is = file[i].getInputStream();
            OutputStream os = new FileOutputStream(new File(path, file[i].getOriginalFilename()));
            int len = 0;
            byte[] buffer = new byte[400];
            while((len = is.read(buffer)) != -1) {
                os.write(buffer, 0, len);
            }
            os.close();
            is.close();
        }
        return "/index.jsp";
    }

 

posted @ 2018-07-08 21:02  莯汐  阅读(85)  评论(0)    收藏  举报