java回顾:文件上传 (配合SpringMVC)

目录

十一、文件上传 

11.1、文件上传三要素

11.2、SpringMVC实现文件上传

11.2.1 导入Fileupload的jar包

11.2.2 配置到springmvc.xml文件中

11.2.3 编写前端页面(发送上传文件的请求)  

11.2.4  测例


十一、文件上传 

用户通过客户端,将用户本地文件传递到服务器上,并在服务器上将用户上传的文件进行保存;

11.1、文件上传三要素

【1】请求方式必须是Post,Get请求携带的数据量受限

【2】form表单的enctype取值必须是:multipart/form-data

        form默认content-type是:application/x-www-form-urlencoded

        enctype:是表单请求正文的类型

        multipart/form-data: 多部分表单项

                作用:

                        1.将普通表单项与文件上传项分离,普通表单项可以直接被解析

                        2.而上传文件项需要对上传的文件进行解析,并保存文件

【3】提供一个文件输入框<input type="file" name="xxx"/>

    <form method="post" enctype="multipart/form-data">
          用户名: <input  type="text" name="username"/>      【普通表单项】
          密码: <input type="text" name="password" />       【普通表单项】
          头像: <input type="file" name="filename" />       【上传文件项】
          <input type="submit" value="提交表单" />  
    </form>

11.2、SpringMVC实现文件上传

11.2.1 导入Fileupload的jar包

 	<!--普通文件上传-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>

11.2.2 配置到springmvc.xml文件中

	<!-- 配置文件上传解析器 id为固定值,不能变-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--最大文件大小,单位字节 5m= 1024*1024*5-->
        <property name="maxUploadSize" value="5000000"/>
        <!--指定默认编码格式-->
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

11.2.3 编写前端页面(发送上传文件的请求)  

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
    <!--必须为post提交,multipart/form-data-->
    <form action="/fileUpload/one" method="post" enctype="multipart/form-data">
        <!--标签name与控制器参数名相同-->
        用户名: <input type="text" name="name" value="tom"> <br>
        年龄: <input type="text" name="age" value="18"> <br>
        头像: <input type="file" name="file"> <br>
        <input type="submit" value="提交表单">
    </form>

    <form action="/fileUpload/more" method="post" enctype="multipart/form-data">
        <!--标签name与控制器参数名相同-->
        用户名: <input type="text" name="name" value="碇真嗣"> <br>
        年龄: <input type="text" name="age" value="14"> <br>
        <%--name相同,控制器使用数组接收--%>
        头像: <input type="file" name="file"> <br>
        头像: <input type="file" name="file"> <br>
        头像: <input type="file" name="file"> <br>
        <input type="submit" value="提交表单">
    </form>
</body>
</html>

11.2.4  测例

 

@Controller
@RequestMapping("/fileUpload")
public class FileUpload {

    @RequestMapping("/one")
    public String uploadOne(String name, String age, MultipartFile file) throws IOException {
        System.out.println("name = " + name + ",age = " + age + ",file = " + file);
        //form表单中输入项的名称(name属性对应的名称)
        String inputName = file.getName();
        //获取图片原始名称
        String filename = file.getOriginalFilename();
        //获取文件的后缀名,从。开始截取到最后
        String substring = filename.substring(filename.lastIndexOf("."));
        System.out.println("输入名 = " + inputName + ",原始名 = " + filename + ",后缀名 = " + substring);
        //本地转存
        file.transferTo(new File("C:\\Users\\14614\\Desktop\\images\\"+filename));
        return "success";
    }

    @RequestMapping("/more")
    public String uploadMore(String name, String age, MultipartFile[] file) throws IOException {
        System.out.println("name = " + name + ",age = " + age + ",file = " + file);
        //form表单中输入项的名称(name属性对应的名称)
        for (MultipartFile mfile : file) {
            String inputName = mfile.getName();
            //获取图片原始名称
            String filename = mfile.getOriginalFilename();
            //获取文件的后缀名,从。开始截取到最后
            String substring = filename.substring(filename.lastIndexOf("."));
            System.out.println("输入名 = " + inputName + ",原始名 = " + filename + ",后缀名 = " + substring);
            //本地转存 使用uuid代替文件名
            mfile.transferTo(new File("C:\\Users\\14614\\Desktop\\images\\"+ UUID.randomUUID()+substring));
        }
        return "success";
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值