springMVC的文件上传

文件上传的三要素:【表单三要素】

  • 表单项: type:=“file”。
  • 表单的提交方式:post。
  • 表单的encype属性是多部份表单的形式,entype=”multipart/form-data”。

代码示例:

文件上传的原理:

单文件上传:

 单文件上传的步骤:

  • 导入文件上传的相关坐标。
  • 在springMVC配置文件中进行配置文件上传解析器。
  • 编写文件上传的代码。

导入文件上传的相关坐标:


<!--    文件上传的坐标-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
<!--     文件上传功能 需要的坐标-->
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>

配置文件上传解析器:

<!--    配置文件上传解析器   id中的值是固定的不可以改变的-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--        设置文件上传的总大小【上限】-->
         <property name="maxUploadSize" value="5242800"/>
<!--        上传单个文件的大【上限】小-->
        <property name="maxUploadSizePerFile" value="5242800"/>
<!--        设置上传文件的编码类型-->
        <property name="defaultEncoding" value="UTF-8"/>

    </bean>

文件上传的代码:

@PostMapping("/save18")
@ResponseBody
//MultipartFile  对象专门接收客户端上传的文件   其实例对象代表了一个在multipart请求中接收到的待上传文件   然后将其封装成对象
//MultipartFile  属性名要和表单上传项的name的属性值一样
private  void  sjdsdo(String name, MultipartFile  file){
        //方法是获取上传文件的名称  
    String originalFilename = file.getOriginalFilename();
    try {
        //设置上传文件的存储路径
        file.transferTo(new File("D:\\1\\"+originalFilename));
    } catch (IOException e) {
        e.printStackTrace();
    }

上面配置文件上传解析也是依赖于依赖注入。那么怎样调用呢,使用spring来进行调用。

并且上面配置文件上传解析器的Bean的id值是固定不变的。原因是:文件上转解析器是由spring来调用的,在spring的核心配置类中,就已经将一些配置的值就已经固定好了。所以id的值不能改变。

spring源码:

多文件上传文件的实现:
  多文件的上传步骤和单文件上传的步骤相同:

  多文件相比较于单文件上传的代码的变动如下:

业务类接收上传文件参数的变化:

 

 针对多文件上传的问题使用数组的形式来接收。

表单提交代码的name属性内容的改变:

 在文件选择的表单项中的name的属性值保持一致,目的是为了在业务方法以数组的形式接收上传的文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值