论坛首页 编程语言技术论坛

Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】

浏览 25349 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2016-04-24  

       文件上传主要分以下几个步骤

1)新建maven java project

2)在pom.xml加入相应依赖;

3)新建一个表单页面(这里使用thymleaf;

4)编写controller;

5)测试;

6)对上传的文件做一些限制;

7)多文件上传实现

 

 

1)新建maven java project

新建一个名称为spring-boot-fileupload maven java项目;

 

 

2)在pom.xml加入相应依赖;

加入相应的maven依赖,具体看以下解释:

<!--

       spring boot 父节点依赖,

       引入这个之后相关的引入就不需要添加version配置,

       spring boot会自动选择最合适的版本进行添加。

     -->

    <parent>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-parent</artifactId>

       <version>1.3.3.RELEASE</version>

    </parent>

  <dependencies>

        <!-- spring boot web支持:mvc,aop... -->

       <dependency>

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-starter-web</artifactId>

       </dependency>

       <!-- thmleaf模板依赖. -->

       <dependency>

         <groupId>org.springframework.boot</groupId>

         <artifactId>spring-boot-starter-thymeleaf</artifactId>

       </dependency>

  </dependencies>

    <build>

       <plugins>

           <!-- 编译版本; -->

           <plugin>

              <artifactId>maven-compiler-plugin</artifactId>

              <configuration>

                  <source>1.8</source>

                  <target>1.8</target>

              </configuration>

           </plugin>

       </plugins>

    </build>

 

3)新建一个表单页面(这里使用thymleaf

src/main/resouces新建templates(如果看过博主之前的文章,应该知道,templatesspring boot存放模板文件的路径),在templates下新建一个file.html:

 

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"

      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">

    <head>

        <title>Hello World!</title>

    </head>

    <body>

       <form method="POST" enctype="multipart/form-data" action="/upload"> 

           <p>文件:<input type="file" name="file" /></p>

           <p><input type="submit" value="上传" /></p>

       </form>

    </body>

</html>

 

4)编写controller;

       编写controller进行测试,这里主要实现两个方法:其一就是提供访问的/file路径;其二就是提供post上传的/upload方法,具体看代码实现:

package com.kfit;

 

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

 

@Controller

publicclass FileUploadController {

   

    //访问路径为:http://127.0.0.1:8080/file

    @RequestMapping("/file")

    public String file(){

       return"/file";

    }

   

    /**

     * 文件上传具体实现方法;

     * @param file

     * @return

     */

    @RequestMapping("/upload")

    @ResponseBody

    public String handleFileUpload(@RequestParam("file")MultipartFile file){

       if(!file.isEmpty()){

           try {

              /*

               * 这段代码执行完毕之后,图片上传到了工程的跟路径;

               * 大家自己扩散下思维,如果我们想把图片上传到 d:/files大家是否能实现呢?

               * 等等;

               * 这里只是简单一个例子,请自行参考,融入到实际中可能需要大家自己做一些思考,比如:

               * 1、文件路径;

               * 2、文件名;

               * 3、文件格式;

               * 4、文件大小的限制;

               */

              BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(file.getOriginalFilename())));

              out.write(file.getBytes());

              out.flush();

              out.close();

           } catch (FileNotFoundException e) {

              e.printStackTrace();

              return"上传失败,"+e.getMessage();

           } catch (IOException e) {

              e.printStackTrace();

              return"上传失败,"+e.getMessage();

           }

           return"上传成功";

       }else{

           return"上传失败,因为文件是空的.";

       }

    }

}

 

5)编写App.java然后测试

       App.java没什么代码,就是Spring Boot的启动配置,具体如下:

package com.kfit;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

 

/**

 * Hello world!

 *

 */

//其中@SpringBootApplication申明让spring boot自动给程序进行必要的配置,等价于以默认属性使用@Configuration@EnableAutoConfiguration@ComponentScan

@SpringBootApplication

publicclass App {

   

   

    publicstaticvoid main(String[] args) {

       SpringApplication.run(App.class, args);

    }

}

 

然后你就可以访问:http://127.0.0.1:8080/file 进行测试了,文件上传的路径是在工程的跟路径下,请刷新查看,其它的请查看代码中的注释进行自行思考。

 

6)对上传的文件做一些限制;

 

       对文件做一些限制是有必要的,在App.java进行编码配置:

@Bean 

    public MultipartConfigElement multipartConfigElement() { 

        MultipartConfigFactory factory = new MultipartConfigFactory();

        //// 设置文件大小限制 ,超了,页面会抛出异常信息,这时候就需要进行异常信息的处理了;

font-

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics