zoukankan      html  css  js  c++  java
  • SpringMVC_4_实操FileUpload

    previous:SpringMVC_3_实操Binding next:SpringMVC_5_实操JSON

    http://www.imooc.com/video/8413

    4-6 FileUpload 单文件上传

    mvc-dispatcher-servlet.xml中加入如下代码

        <!--200*1024*1024即200M resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常 -->
        <bean id="multipartResolver"
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="209715200" />
            <property name="defaultEncoding" value="UTF-8" />
            <property name="resolveLazily" value="true" />
        </bean>

    org.springframework.web.multipart.commons.CommonsMultipartResolver

    pom.xml中引入

            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
            </dependency>

     如下图所示commons-fileupload又依赖于commons-io包,这样在编码中就不用显示的引入了。

    2. 引入之后在contoller中:

        @RequestMapping(value="/upload", method=RequestMethod.GET)
        public String showUploadPage(@RequestParam(value= "multi", required = false) Boolean multi){    
            if(multi != null && multi){
                return "course_admin/multifile";    
            }
            return "course_admin/file";        
        }
        
    

    JSP:

    <form method="post" action="/courses/doUpload" enctype="multipart/form-data">

    文件上传时必须显示指定的属性,如果没有无法完成工作。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>我不是真正的慕课网</title>
    
    <link rel="stylesheet" href="<%=request.getContextPath()%>/resources/css/main.css" type="text/css" />
    </head>
    <body>
    <div align="center">
    
    <h1>上传附件</h1>
    <form method="post" action="/courses/doUpload" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit"/>
    </form>
    </div>
    </body>
    </html>

    controller,doUploadFile方法

    1)文件上传期待是post方式

    2)MultipartFile类,是上传文件的接口

    3)@RequestParam("file")使之与表单文件相关联

    4) 把文件拷贝到指定位置

      a.输入流:file.getInputStream()

      b.保存位置和保存名指定:new File("c:\temp\imooc\", System.currentTimeMillis()+ file.getOriginalFilename()));

      c.System.currentTimeMillis()为时间戳

      FileUtils.copyInputStreamToFile(file.getInputStream(), new File("c:\temp\imooc\", System.currentTimeMillis()+ file.getOriginalFilename()));

    5)返回页,前后文已经通过配置设定,只指定JSP的名字即可。

      return "success"; 

        @RequestMapping(value="/doUpload", method=RequestMethod.POST)
        public String doUploadFile(@RequestParam("file") MultipartFile file) throws IOException{
            
            if(!file.isEmpty()){
                log.debug("Process file: {}", file.getOriginalFilename());
                FileUtils.copyInputStreamToFile(file.getInputStream(), new File("c:\temp\imooc\", System.currentTimeMillis()+ file.getOriginalFilename()));
            }
            
            return "success";
        }
  • 相关阅读:
    Rsync算法
    java学习之异常
    多边形的扫描转换(一)X扫描线算法
    区域填充算法
    直线绘制的三个著名的常用算法(二)中点画线法
    Dev C++图形环境配置
    直线绘制的三个著名的常用算法(三)Bresenham算法
    直线绘制的三个著名的常用算法(一)数值微分法(DDA)
    反走样
    网课——计算机图形学(第一课)
  • 原文地址:https://www.cnblogs.com/charles999/p/6755690.html
Copyright © 2011-2022 走看看