SSM框架学习9-springmvc文件上传

目录

1. 导入文件上传的工具依赖

2. 配置文件上传的解析器

3. 编写测试

3.1单文件上传

3.2多文件上传


1. 导入文件上传的工具依赖

在web.xml中配置:

<!--      文件上传工具-->
      <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
      </dependency>
      <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.4</version>
      </dependency>

2. 配置文件上传的解析器

在spring-mvc中配置:

<!--    配置文件上传的解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--        设置编码-->
        <property name="defaultEncoding" value="UTF-8"/>
<!--        设置上传最大的大小限制(单位kb)-->
        <property name="maxUploadSize" value="100000000" />

    </bean>

3. 编写测试

接下来两个例子来说明用法

3.1单文件上传

首先编写好表单如下:

<%--有文件上传时必须选择多部分表单形式——enctype--%>
<form action="${pageContext.request.contextPath}/user/quick14" method="post" enctype="multipart/form-data">
    name:<input type="text" name="username"><br/>
    file:<input type="file" name="upload"><br/>
    <input type="submit" value="提交">
</form>

当要上传文件时,注意 enctype的设置,此时后台获取的方法:

    @RequestMapping("/quick14")
    @ResponseBody
    public void save14(String username, MultipartFile upload) throws IOException {
        System.out.println(username);
        String filename=upload.getOriginalFilename();//获得源文件的完整名字,含后缀
        upload.transferTo(new File("D:\\image\\" + filename));//将这个文件转存到另一个地方,这个地址是基于当前主机的绝对地址,记住最后要加\\
    }

首先我们接收String参数很简单形参和表单name匹配即可,然后我们的file数据在springmmvc里也设置了一个对象即 MultipartFile,然后形参与表单那么匹配即可

然后我们需要得到这个源文件的名字——getOriginalFilename(),通过这个方法即可,

然后就是通过——transferTo(new File("绝对路径\\"+文件名))

将文件写入本地,因为有了一个MultipartFile对象,使我们获得文件数据并操作它变得简易。

3.2多文件上传

第一种方式就是多设置几个上传文件的input,将name设置成不同的,然后后台对象增多,一样的方法执行,这里就不多赘述。

第二种方式就是通过数组的方式,也就是将MultipartFile对象设为数组来接收请求数据:

就像这样,我们只需要多uploadFile这个数组循环操作即可

这种方式下,表单中文件传输的input的name就都设为相同:

 这就跟上一章讲的数组的请求传参一样,name相当于键都设为同一值,这时框架会自动匹配形参里面的这个值,而这个刚好是一个文件数组形式的对象,所以就依次往数组里添加文件对象。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值