Spring應用配置文件上傳的兩種方案

歡迎查看Java開發之上帝之眼系列教程,若是您正在爲Java後端龐大的體系所困擾,若是您正在爲各類繁出不窮的技術和各類框架所迷茫,那麼本系列文章將帶您窺探Java龐大的體系。本系列教程但願您能站在上帝的角度去觀察(瞭解)Java體系。使Java的各類後端技術在你心中模塊化;讓你在工做中能將Java各個技術瞭然於心;可以即插即用。本章咱們來一塊兒瞭解Spring的文件上傳全解析。html

首先對於Spring的文件上傳,咱們僅僅須要關注三點前端

  1. Spring須要具有解析Multipart能力
  2. 前端須要文件轉換爲Multipart請求
  3. 在Controller中接收Multipart請求

在Spring項目中配置Multipart解析器

  • StandardServletMultipartResolver
  • CommonsMultipartResolver

在JavaConfig中配置StandardServletMultipartResolverjava

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

在JavaConfig配置CommonsMultipartResolverweb

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

在XML配置CommonsMultipartResolverspring

<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開發之上帝之眼系列教程其餘文章

勘誤&感謝

  本系列文章資料來源不少出自於互聯網和在下自己的看法,受限於我的技術能力水平和其餘相關知識的限制,相關看法錯誤或者資料引用錯誤請各位幫助留言校訂!引用資料多來自於互聯網,在下在引用前會遵循各位前輩或者博主的引用說明表示感謝,但互聯網資料可能是轉發再轉發或存在遺漏請原做者內信聯繫指正。後端

相關文章
相關標籤/搜索