码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC文件上传下载

时间:2017-10-01 16:19:44      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:中文   例子   .com   直接   ons   读取   dir   pat   配置   

---恢复内容开始---

文件的上传下载时项目开发最常用到的功能,上传文件时表单必须进行如下设置:

  1. 将method 设置为POST
  2. 并将enctype设置为multipart/data

这样浏览器才会将用户选择的文件二进制数据发送给服务器

Springle MVC为文件上传提供了直接的支持,,这种支持是用MultipartResolver实现,SpringMVC上传需要依赖Apache Commons FileUpload的支持

即需要commons-fileupload-xx.jar架包,

这里先来一个上传的小例子

1、首先是在配置文件中配置MultipartResolver

 <bean id="multipartResolver"  
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <!-- 上传文件大小上限,单位为字节(10MB) -->
        <property name="maxUploadSize">  
            <value>10485760</value>  
        </property>  
        <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
        <property name="defaultEncoding">
            <value>UTF-8</value>
        </property>
    </bean>

2、前端页面

<body>
    <h2>Spring MVC文件上传</h2>
    <form action ="upload" enctype="multipart/form-data" method="post">
        <table>
            <tr>
                <td>文件描述</td>
                <td><input type="text" name="description"/></td>
            </tr>
            <tr>
                <td>请选择文件</td>
                <td><input type="file" name="file"></td>
            </tr>
            <tr>
                <td><input type="submit" value="上传"></td>
            </tr>
        </table>
    </form>
</body>
</html>

3、上传方法

@RequestMapping(value="/{formName}")
     public String loginForm(@PathVariable String formName){
        // 动态跳转页面
        return formName;
    }
    
    // 上传文件会自动绑定到MultipartFile中
         @RequestMapping(value="/upload",method=RequestMethod.POST)
         public String upload(HttpServletRequest request,
                @RequestParam("description") String description,
                @RequestParam("file") MultipartFile file,
                Model model) throws Exception{
             
            System.out.println(description);
            // 如果文件不为空,写入上传路径
            if(!file.isEmpty()){
                // 上传文件路径
                String path = request.getServletContext().getRealPath(
                        "/images/");
                // 上传文件名
                String filename = file.getOriginalFilename();
                File filepath = new File(path,filename);
                // 判断路径是否存在,如果不存在就创建一个
                if (!filepath.getParentFile().exists()) { 
                    System.out.println("路径不存在");
                    filepath.getParentFile().mkdirs();
                }
                System.out.println(filepath.getParentFile());
                // 将上传文件保存到一个目标文件当中
                file.transferTo(new File(path+File.separator+ filename));
                return "success";
            }else{
                return "error";
            }
             
         }
    

Spring MVC会将上传的文件绑定到MultipartFile中,MultipartFile提供获得上传文件的内容,文件名的方法,通过transTo()方法还可以将文件存储在硬件中,MultipartFile

常用的方法如下:

  1. byte[] getByte():获取文件
  2. String getContentType():获取文件MIME类型,如image/jpeg
  3. InputStream getInputStream()获取文件流
  4. String getName().获取表单中文件组件的名字
  5. String getOriginalFilename()获得上传文件的原名
  6. long getSize():获取文件字节大小
  7. boolean isEmpty():是否有上传文件
  8. void transferTo(File dest):将文件保存到一个目标文件中

 

Spring MVC文件上传下载

标签:中文   例子   .com   直接   ons   读取   dir   pat   配置   

原文地址:http://www.cnblogs.com/cumtlg/p/7617230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!