java注解接收上传文件_SpringMVC 处理 multipart/data 请求实现文件上传

此前我们介绍过 HTTP 的 multipart/form-data 请求:

通过 multipart/form-data 请求可以方便的实现客户端到服务端的文件上传服务,但是默认的 DispatcherServlet 并不支持 multipart/form-data 请求,需要手动配置来启用 multipart/form-data 请求

java configuration 配置

AbstractAnnotationConfigDispatcherServletInitializer 将 DispatcherServlet 注册到 Servlet 容器后,会生成一个 ServletRegistration.Dynamic 对象,并用这个对象调用 customizeRegistration 方法

通过复写 customizeRegistration 方法可以进行对 DispatcherServlet 进行额外的配置

package com.techlog.test.configuration;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.MultipartConfigElement;

import javax.servlet.ServletRegistration;

/**

* DispatcherServlet 初始化配置

* Created by techlog on 2016/11/17.

*/

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

/**

* @return Spring 应用上下文配置类

*/

@Override

protected Class>[] getRootConfigClasses() {

return new Class>[] { RootConfig.class };

}

/**

* @return Servlet Web 上下文配置类

*/

@Override

protected Class>[] getServletConfigClasses() {

return new Class>[] { WebConfig.class };

}

/**

* @return 匹配的 URL 模式

*/

@Override

protected String[] getServletMappings() {

return new String[] { "/" };

}

@Override

protected void customizeRegistration(ServletRegistration.Dynamic registration) {

registration.setMultipartConfig(new MultipartConfigElement("/tmp/techlog/uploads"));

}

}

这里我们调用 setMultipartConfig 方法启用了 multipart 请求的处理,并将 /tmp/techlog/uploads 目录设为了上传文件接收目录

通过 MultipartConfigElement 的不同构造器我们除上传路径这个必须参数外,还可以指定其他可选的限制条件:上传文件的最大容量(Byte)

整个 multipart 请求的最大容量(Byte)

上传文件大小(Byte)大于某个阈值则写入磁盘,否则保存在内存中,默认为 0

web.xml 配置

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd" >

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">

appServlet

/*

appServlet

org.springframework.web.servlet.DispatcherServlet

1

/tmp/techlog/uploads

2097152

4194304

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值