Spring mvc实现文件上传

来源:互联网 发布:苹果手机的mac地址在哪 编辑:程序博客网 时间:2024/05/16 18:02
Spring mvc为文件上传提供了很直接的支持,这种支持时通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。Spring mvc的配置文件中默认是没有装配MultipartResolver,因此在默认情况下是不能处理一个文件上传工作的。如果想要使用就必须在上下文中配置。1、配置MultipartResolver在Spring mvc的配置文件中加入以下配置
<bean id="multipartResovler" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"     p:defaultEncoding="UTF-8" p:maxUploadSize="5242880" p:uploadTempDir="upload/temp">
注意:defaultEncoding必须和用户jsp中的pageEncoding属性一致,以便正确的读取表单中的内容,uploadTempDir是文件上传过程所使用的临时目录,文件上传完成后就会被自动清除。2、编写控制器和文件上传表单UserController.java
    @Controller    @RequestMapping("/user")    public class UserController {        @RequestMapping(value="/uploadPage")        public String uploadPage(){            return "uploadPage";        }        @RequestMapping(value="/upload")        public String upload(@RequestParam("name") String name,@RequestParam("file") MultipartFile file){            if(!file.isEmpty()) {                file.transferTo(new File("d:/tem/" + file.getOriginalFilename()));                return "redirect:success.html";            } else {                return "redirect:fail.html";            }        }
Spring mvc会将上传的文件绑定到MultipartFile对象中。MultipartFile提供了获取上传文件的内容、文件名等,还可以通过tramsferTo()方法将文件存储到磁盘中。负责上传文件的表单和一般的表单还是有区别的,表单类型必须是multipart/form-data类型。
<%@ page language="java" contentType="text/html;charest=UTF-8" pageEncoding="UTF-8" %><%@ tag lib prefix="c" uri="http://java.sun.com/jsp/jst/core" %><html>    <head>        <title>请上传头像</title>    </head>    <body>        <form method="post" action="<c:url value="/user/upload.html">" enctype="multipart/form-date">            <input type="text" name="name"/>            <input type="file" name="file"/>            <input type="submit"/>        </form>    </body></html>
0 0
原创粉丝点击