springmvc文件上传

对于文件上传也就是multipart数据请求,dispatcher并没有提供解析的实现,而是将他交给了spring的multipartResolver接口来实现,spring的内置实现主要有两种:
1、CommonsMultipartResolver : 依赖Jakarta Commons FileUpload
2、StandardServletMultiPartResolver : 依赖于servlet3.0

第二种方式不需要依赖外部组件的支持,而且配置请求的总体容量,所以建议用第二种方式。

首先在dispatcher上下文中注册MultipartResolver:

@Bean
    public MultipartResolver multipartResolver() throws IOException {
        //以servlet3.0的支持来进行文件上传
//      return new StandardServletMultipartResolver();

        //依赖commons fileupload组件
        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
        commonsMultipartResolver.setUploadTempDir(new FileSystemResource("/WEB-INF/uploads"));
        commonsMultipartResolver.setMaxUploadSize(2*1024*1024);
        commonsMultipartResolver.setMaxInMemorySize(0);
        return commonsMultipartResolver;
    }

上面包括两种方式的bean注册。

StandardServletMultipartResolver与CommonsMultipartResolver不同的一点在于他本身并没有提供配置方法,我们只能配置MultipartConfigElement来控制,在实现了AbstractAnnotationConfigDispatcherServletInitializer的类下重写customizeRegistration方法:

/**
     * 配置Multipart请求参数
     * @param registration 注册
     */
    @Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        registration.setMultipartConfig(new MultipartConfigElement("/WEB-INF/uploads",
                1024*1024*2, 1024*1024*4, 0));
    }

这样配置就完成了,controller层接收文件时用MultipartFile或者part接口处理就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值