zoukankan      html  css  js  c++  java
  • Spring应用配置文件上传的两种方案

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本章我们来一起了解Spring的文件上传全解析。

    首先对于Spring的文件上传,我们仅仅需要关注三点

    1. Spring需要具备解析Multipart能力
    2. 前端需要文件转换为Multipart请求
    3. 在Controller中接收Multipart请求

    在Spring项目中配置Multipart解析器

    • StandardServletMultipartResolver
    • CommonsMultipartResolver

    在JavaConfig中配置StandardServletMultipartResolver

     @Bean
        public MultipartResolver multipartResolver() throws IOException {
            return new StandardServletMultipartResolver();
        }
     @Override
        protected void customizeRegistration(ServletRegistration.Dynamic registration) {
            registration.setMultipartConfig(new MultipartConfigElement("D://"));
        }
    

    在JavaConfig配置CommonsMultipartResolver

      @Bean
        public MultipartResolver multipartResolver() throws IOException {
            CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
            commonsMultipartResolver.setUploadTempDir(new FileSystemResource("/temp"));
            return commonsMultipartResolver;
        }
    

    在XML配置CommonsMultipartResolver

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

    在前端传递multipart请求

    <form action="/fileUpload" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="submit">
    </form>
    

    在Controller方法参数中接收multipart请求

    • @RequestPart("file") byte[] file
    • @RequestPart("file") Part file
    • MultipartFile file
        @RequestMapping("/fileUpload")
        public void FileUpload(@RequestPart("file") byte[] file) {
                ...
        }
    
        @RequestMapping("/fileUpload")
        public void FileUpload(@RequestPart("file") Part file) throws IOException {
            file.write("D://test.jpg");
        }
    
        @RequestMapping("/fileUpload")
        public void FileUpload(MultipartFile file) throws IOException {
            String originalFilename = file.getOriginalFilename();
            file.transferTo(new File("D://" + originalFilename));
        }
    

    Java开发之上帝之眼系列教程其他文章

    勘误&感谢

      本系列文章资料来源很多出自于互联网和在下本身的见解,受限于个人技术能力水平和其他相关知识的限制,相关见解错误或者资料引用错误请各位帮助留言校正!引用资料多来自于互联网,在下在引用前会遵循各位前辈或者博主的引用说明表示感谢,但互联网资料多是转发再转发或存在遗漏请原作者内信联系指正。

  • 相关阅读:
    学习笔记
    js闭包
    一个非必现问题的定位和反思
    C语言的设计模式面向对象机制的实现(一)
    多线程和单线程的执行效率问题
    python 多态
    C语言的设计模式接口隔离
    构建表达式二叉树
    C语言的设计模式依赖倒置
    C语言的设计模式单一职责
  • 原文地址:https://www.cnblogs.com/jimisun/p/9761812.html
Copyright © 2011-2022 走看看