SpringMVC文件上传

配置multipart解析器

  1. CommonsMultipartResolver
    使用Jakarta Commons FileUpload 解析 mulipart请求
  2. StandardServletMultipartResolver
    Servlet3.0支持,Servlet3.0以下不支持

使用StandardServletMultipartResolver

StandardServletMultipartResolver 没有构造器参数,如果要限制上传文件的大小等一些属性,那么需要在web.xml中配置DispatcherServlet的 multipart-config属性

  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <multipart-config>
      <location>J:\\uploads</location>
      <max-file-size>2000000</max-file-size>
    </multipart-config>
  </servlet>

使用spring配置StandardServletMultipartResolver bean

 <bean class="org.springframework.web.multipart.support.StandardServletMultipartResolver"></bean

使用CommonsMultipartResolver

CommonsMultipartResolver 必须要配置临时目录,通过属性来注入

    <bean id="multipartResolver"     class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="UTF-8"></property>
        <property name="maxInMemorySize" value="5400000"></property>
        <property name="uploadTempDir" value="upload"></property>
    </bean>

处理mulipartqing请求

三种方式:
1. 使用byte[] 参数
2. 使用MulipartFile 接口(spring提供)
3. 使用Part 接口(servlet 提供)

byte[]

必须要搭配StandardServletMultipartResolver 解析器

    @RequestMapping("/uploads")
    public String  uploads(@RequestPart  byte[] myfile ) throws IOException{
        System.out.println("上传文件");
        System.out.println(myfile.length);
        OutputStream outputStream = new FileOutputStream("J:\\pic111.png");
        outputStream.write(myfile);
        outputStream.close();
        return "success";
    }

MulipartFile

必须要搭配CommonsMultipartResolver 解析器

public interface MultipartFile extends InputStreamSource {
    String getName();

    String getOriginalFilename();

    String getContentType();

    boolean isEmpty();

    long getSize();

    byte[] getBytes() throws IOException;

    InputStream getInputStream() throws IOException;

    void transferTo(File var1) throws IOException, IllegalStateException;
}

必须要加@RequestParam注解,否则会报错

   @RequestMapping("/upload")
    public String uploads(@RequestParam MultipartFile  myfile) throws IOException {
        System.out.println(myfile.getName());
        System.out.println(myfile.getOriginalFilename());
        myfile.transferTo(new File("J:\\ppp.jpg"));
        return "success";
    }

Part

必须要搭配StandardServletMultipartResolver 解析器

   @RequestMapping("/upload")
    public String uploads(@RequestPart Part myfile) throws IOException {
        System.out.println(myfile.getName());
        System.out.println(myfile.getOriginalFilename());
        myfile.transferTo(new File("J:\\ppp.jpg"));
        return "success";
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值