欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

全面解析SpringBoot文件上传功能

程序员文章站 2024-04-01 20:18:34
这些天忙着刷题,又怕遗忘了spring boot, 所以抽出一点时间折腾折腾,加深点印象。 spring boot 的文件上传与 spring mvc 的文件上传基本一...

这些天忙着刷题,又怕遗忘了spring boot, 所以抽出一点时间折腾折腾,加深点印象。
spring boot 的文件上传与 spring mvc 的文件上传基本一致,只需注意一些配置即可。
环境要求: spring boot v1.5.1.release + jdk1.7 + myeclipse

1).引入thymeleaf,支持页面跳转

   <!-- 添加thymeleaf -->
    <dependency> 
     <groupid>org.springframework.boot</groupid> 
     <artifactid>spring-boot-starter-thymeleaf</artifactid> 
    </dependency>

2).在 src/main/resources 目录下新建 static 目录和 templates 目录。 static存放静态文件,比如 css、js、image… templates 存放静态页面。先在templates 中新建一个 uploadimg.html

<!doctype html>
<html>
 <head>
  <title>uploadimg.html</title>

  <meta name="keywords" content="keyword1,keyword2,keyword3"></meta>
  <meta name="description" content="this is my page"></meta>
  <meta name="content-type" content="text/html; charset=utf-8"></meta>

  <!--<link rel="stylesheet" type="text/css" href="./styles.css" rel="external nofollow" >-->

 </head>

 <body>
 <form enctype="multipart/form-data" method="post" action="/testuploadimg">
  图片<input type="file" name="file"/>
  <input type="submit" value="上传"/>
  </form>
 </body>
</html>

3).在 controller 中写两个方法,一个方法跳转到上传文件的页面,一个方法处理上传文件

//跳转到上传文件的页面
  @requestmapping(value="/gouploadimg", method = requestmethod.get)
  public string gouploadimg() {
    //跳转到 templates 目录下的 uploadimg.html
    return "uploadimg";
  }

  //处理文件上传
  @requestmapping(value="/testuploadimg", method = requestmethod.post)
  public @responsebody string uploadimg(@requestparam("file") multipartfile file,
      httpservletrequest request) {
    string contenttype = file.getcontenttype();
    string filename = file.getoriginalfilename();
    /*system.out.println("filename-->" + filename);
    system.out.println("getcontenttype-->" + contenttype);*/
    string filepath = request.getsession().getservletcontext().getrealpath("imgupload/");
    try {
      fileutil.uploadfile(file.getbytes(), filepath, filename);
    } catch (exception e) {
      // todo: handle exception
    }
    //返回json
    return "uploadimg success";
  }

4).在上面中,我将文件上传的实现写在工具类 fileutil 的 uploadfile 方法中

public static void uploadfile(byte[] file, string filepath, string filename) throws exception { 
    file targetfile = new file(filepath); 
    if(!targetfile.exists()){  
      targetfile.mkdirs();  
    }    
    fileoutputstream out = new fileoutputstream(filepath+filename);
    out.write(file);
    out.flush();
    out.close();
  }

5).在浏览器输入http://localhost:8080/gouploadimg 测试

全面解析SpringBoot文件上传功能

上传文件后:

全面解析SpringBoot文件上传功能

在应用的 src/main/webapp/imgupload 目录下

全面解析SpringBoot文件上传功能

6).如果上传的文件大于 1m 时,上传会报错文件太大的错误,在 application.properties 中设置上传文件的参数即可

spring.http.multipart.maxfilesize=100mb
spring.http.multipart.maxrequestsize=100mb

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。