• 文件上传:CommonsMultipartResolver


    一. 简介

      CommonsMultipartResolver是基于Apache的Commons FileUpload来实现文件上传功能的,主要作用是配置文件上传的一些属性。

    二. 配置  

      1)依赖Apache的Commons FileUpload,所以Maven的pom文件添加依赖;

    <dependency>
    	<groupId>commons-fileupload</groupId>
    	<artifactId>commons-fileupload</artifactId>
    	<version>1.3.3</version>
    </dependency>
    

      2)applicationContext.xml配置bean

        <!-- 文件上传解析器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="209715200"/>
            <property name="maxInMemorySize" value="40960"/>
        </bean>
    

      3)id的来源,查看springMVC的核心控制器DispatcherServlet,有一些bean名字常量的定义

    lic class DispatcherServlet extends FrameworkServlet {
        public static final String MULTIPART_RESOLVER_BEAN_NAME = "multipartResolver";
        public static final String LOCALE_RESOLVER_BEAN_NAME = "localeResolver";
        public static final String THEME_RESOLVER_BEAN_NAME = "themeResolver";
        public static final String HANDLER_MAPPING_BEAN_NAME = "handlerMapping";
        public static final String HANDLER_ADAPTER_BEAN_NAME = "handlerAdapter";
        public static final String HANDLER_EXCEPTION_RESOLVER_BEAN_NAME = "handlerExceptionResolver";
        public static final String REQUEST_TO_VIEW_NAME_TRANSLATOR_BEAN_NAME = "viewNameTranslator";
        public static final String VIEW_RESOLVER_BEAN_NAME = "viewResolver";
        public static final String FLASH_MAP_MANAGER_BEAN_NAME = "flashMapManager";
    

    三. 使用

      1)流程:

          客户端请求必须是MultipartHttpServletRequest(HttpServletRequest的一个子类)请求 ---> spring的DispatcherServlet会调用方法checkMultipart()验证 ---> multipartResolver(会检验配置文件里面配置的一些属性:比如文件的最大值)

      2)检验后,代码对文件的处理例子

    @RequestMapping("/fileUpload")
    public AjaxList fileUpload(HttpServletRequest request,HttpServletResponse response){
        MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
        MultipartFile file = multiRequest.getFile("fileName");
        if(file!=null){
            File localFile = new File("D:/"+file.getOriginalFilename());
            try {
                file.transferTo(localFile); //将上传文件写到服务器上指定的文件
            } catch (Exception e) {
                e.printStackTrace();
                return AjaxList.createError("服务器异常");
            } 
        }
         return AjaxList.createSuccess("上传成功");
    }
    

      

     

      

  • 相关阅读:
    现在连Linux都搞不懂,当初我要是这么学习操作系统就好了!
    一时技痒,撸了个动态线程池,源码放Github了
    Java线程池ThreadPoolExecutor使用和分析(一)
    canch----1.对缓存的思考
    1.java 内存数据库--H2数据库使用指南
    What’s the difference between persist, save, merge and update? Which one should you use?
    primary key's generator in JPA entity
    STM32F103驱动M24256 256k存储芯片进行读写
    【Proteus+51单片机学习笔记】-51/52系列单片机简介
    【STM32项目笔记】STM32CubeMX+Keil+Proteus联合实现LED闪烁
  • 原文地址:https://www.cnblogs.com/knsbyoo/p/9047055.html
Copyright © 2020-2023  润新知