SpringMVC实现文件的上传

(1).在maven环境下引入jar包

需要引入commons-fileupload包

		<dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>1.3.2version>
        dependency>
(2).在spring-mvc.xml文件中配置解析器

将文件转换为流之后成功被Controller控制端接收,需要在Controller上添加@MultipartConfig注解,通过getParts()方法获取流对象,并解析文件流的内容,非常复杂,而SpringMVC帮我们提供了一个内置的解析文件的类CommonsMultipartResolver

 <!-- 实例化二进制流解析器 -->
 <bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 指定文件上传过程中提交的数据库的编码 -->
   <property name="defaultEncoding" value="UTF-8"></property>
    <!-- 指定上传文件的保存的临时目录 --> 
    <property name="uploadTempDir" value="/upload"></property>
    <!-- 指定上传的文件的最大大小 -->
    <property name="maxUploadSize" value="1024000000"></property>
 </bean>
(3).搭建一个简单的前分段页面
<form method="post" action="/upload" enctype="multipart/form-data">
    文件名称:<input name="name" type="text">
    <input name="file" type="file">
    <input type="submit" value="提交">
form>
(3).编写控制类

@Controller
public class UploadController {
    @GetMapping("/upload")
    public String upload() {
        return "upload.jsp";
    }

    @PostMapping("/upload")
    public String upload(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) {
        System.out.println(name);
        if (!file.isEmpty()) {
            //file.getOriginalFilename()得到上传时的文件名
            File f = new File(file.getOriginalFilename());
            System.out.println(file.getOriginalFilename());
            try {
                file.transferTo(f);
                InputStream input = new FileInputStream(f);
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(input));
                String str = bufferedReader.readLine();
                System.out.println(str);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return "index.jsp";
    }
}

你可能感兴趣的:(Spring+MyBatis,xml,java,upload)