SpringMVC学习记录(四)--文件上传

学习一个框架少不了学习文件上传



在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传。但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明。这样之后,客户端每次进行请求的时候,springMVC都会检查request里面是否包含多媒体信息,如果包含了就会使用MultipartResolver进行解析,springMVC会使用一个支持文件处理的MultipartHttpServletRequest来包裹当前的HttpServletRequest,然后使用MultipartHttpServletRequest就可以对文件进行处理了。


1.引入依赖包

文件上传需要额外引入包分别是

  1. commons-fileupload-1.3.1.jar
  2. commons-io-2.4.jar

2.配置jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
    <meta charset="utf-8">
    <title>用户登录</title>
</head>
<body>
    <%--文件上传的话需要enctype="multipart/form-data"--%>
    <sf:form modelAttribute="user" method="post" enctype="multipart/form-data">
        用户名:<sf:input path="username"/><sf:errors path="username"/>
        <br>
        密码:<sf:input path="password"/><sf:errors path="password"/>
        <br>
        昵称:<sf:input path="nickname"/><sf:errors path="nickname"/>
        <br>
        <%--这里设置文件上传--%>
        文件:<input type="file" name="file">
        <input type="submit" value="提交">
    </sf:form>
</body>
</html>

3.配置相应的控制器

@RequestMapping(value = "/login",method = RequestMethod.POST)
    public String login(@Validated User user, BindingResult br, Model model,@RequestParam("file") MultipartFile file){
        if (br.hasErrors()){
            return "user/login";
        }
        //分别获取的是变量名file---文件类型---文件名
        System.out.println(file.getName()+"---"+file.getContentType()+"---"+file.getOriginalFilename());
        try {
            if (!file.isEmpty()){
            //使用StreamsAPI方式拷贝文件
                Streams.copy(file.getInputStream(),new FileOutputStream("E:/temp/"+file.getOriginalFilename()),true);
            }
        } catch (IOException e) {
            System.out.println("文件上传失败");
            e.printStackTrace();
        }
        System.out.println(user.toString());
        return "user/login";
    }

至此单个文件上传完成.

4.多文件上传

多文件上传很简单,只需要把参数改为数组就可以了

    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public String login(@Validated User user, BindingResult br, Model model,@RequestParam("file") MultipartFile[] file){
        if (br.hasErrors()){
            return "user/login";
        }
        //这里对文件进行遍历
        for (MultipartFile mul:file){
        //分别获取的是变量名file---文件类型---文件名
            System.out.println(mul.getName()+"---"+mul.getContentType()+"---"+mul.getOriginalFilename());
            try {
                if (!mul.isEmpty()){
                    Streams.copy(mul.getInputStream(),new FileOutputStream("E:/temp/"+mul.getOriginalFilename()),true);
                }
            } catch (IOException e) {
                System.out.println("文件上传失败");
                e.printStackTrace();
            }
        }
        System.out.println(user.toString());
        return "user/login";
    }
时间: 2024-08-04 22:21:51

SpringMVC学习记录(四)--文件上传的相关文章

SpringMVC 学习笔记(八)文件上传

Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的.Spring 用Jakarta Commons FileUpload 技术实现了一个MultipartResolver 实现类:CommonsMultipartResovler Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring的文件上传功能,需现在上下文中配置 MultipartRes

SpringMVC:学习笔记(8)——文件上传

SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. 客户端编程 1.为了上传文件,必须将HTML表格的enctype属性值设为multipart/form-data,像下面这样: <form action="action" enctype="multipart/form-data" method="po

hadoop学习记录--hdfs文件上传过程源码解析

本节并不大算为大家讲接什么是hadoop,或者hadoop的基础知识因为这些知识在网上有很多详细的介绍,在这里想说的是关于hdfs的相关内容.或许大家都知道hdfs是hadoop底层存储模块,专门用于存放数据,那么在进行文件上传的时候hdfs是如何进行的呢?我们按照宏观和微观来进行相关解析工作. 首先需要向大家解释如下几个概念: (1) secondaryNamenode: 其实起初我对SN的理解也和大部分人相同,认为SN是NN(nameNode)的一个实时热备份实现HA,并且在一次笔试的过程中

linux学习记录-----vsftpd文件上传(550 create directory operation failed)

1.连接条件:服务端服务开启,防火墙关闭 2.ftp服务器的路径可手动配置,默认为:var/ftp/pub,必须确保pub目录有足够的权限 3.匿名登陆的用户名为:anonymous,密码为空,当时匿名登陆时候,必须确保pub目录对匿名用户开放:chmod o+w /var/ftp/pub 4.同时更改SELinux设置:setsebool -P ftpd_full_access=on --------------顺利完成vsftp服务文件匿名上传 原文地址:https://www.cnblog

学习笔记_springmvc文件上传和拦截器

文件上传 用到这两个包 配置视图解析器:springmvc配置文件配置 <!-- id必须要是"multipartResolver" --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- maxUploadSize文件上传的最大值,单位是byte

springMVC3学习(十二)--文件上传优化CommonsMultipartResolver

基于上一篇文件上传发现效率很慢,我们应该对它进行优化  使用springMVC对文件上传的解析器 来处理文件上传的时候需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明 这样客户端请求的时候 springMVC会检查request里面是否包含多媒体信息 如果包含了就会使用MultipartResolver进行解析, springMVC会使用一个支持文件  处理的MultipartHttpServletRequest来包

SpringMVC中的多文件上传

这是用的是SpringMVC-3.1.1.commons-fileupload-1.2.2和io-2.0.1 首先是web.xml <?xml version="1.0" encoding="UTF-8"?>   <web-app version="2.5"        xmlns="http://java.sun.com/xml/ns/javaee"        xmlns:xsi="http

SpringMVC(6)文件上传

SpringMVC(6)文件上传 我们做一个上传图片的例子,页面(fileUpload.jsp)功能如下: 上传成功后即时显示上传的图片. upload.jsp: <body> <h3>文件上传</h3> <form action="/testAnnotationMVC_fileUpload/file/fileUpload2.jspx" method="post" enctype="multipart/form-d

SpringMVC注解方式与文件上传

目录: springmvc的注解方式 文件上传(上传图片,并显示) 一.注解 在类前面加上@Controller 表示该类是一个控制器在方法handleRequest 前面加上 @RequestMapping("/index") 表示路径/index会映射到该方法上 将上一篇的博客改为注解方式: SpringMVC的基础配置及视图定位 1.修改springmvc-servlet.xml 去掉映射相关的配置,因为已经使用注解方式了增加 <context:component-scan