Spring Boot 上传文件

Posted jwen1994

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 上传文件相关的知识,希望对你有一定的参考价值。

1.上传文件

Spring Boot 上传文件也是使用 MultipartFile 类,和 Spring MVC 其实差不多,参考文章:https://www.cnblogs.com/jwen1994/p/11182923.html

html

<form enctype="multipart/form-data" method="post" action="/upload">
  文件:<input type="file" name="head_img"/>
  姓名:<input type="text" name="name"/>
  <input type="submit" value="上传"/>
</form>

Java 文件

package com.example.demo.controller;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import com.example.demo.domain.JsonData;

import com.example.demo.domain.JsonData;
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;

/**
 * 功能描述:文件测试
 *
 * <p> 创建时间:Apr 22, 2018 11:22:29 PM </p> 
 * <p> 作者:小D课堂</p>
 */
@Controller
public class FileController 
        private static final String filePath = "F:/IdeaProjects/springbootDemo/src/main/resources/static/images/";
    
        @RequestMapping(value = "upload")
        @ResponseBody
        public JsonData upload(@RequestParam("head_img") MultipartFile file, HttpServletRequest request) 
          
             //file.isEmpty(); 判断图片是否为空
             //file.getSize(); 图片大小进行判断
             
             String name = request.getParameter("name");
             System.out.println("用户名:"+name);
            
             // 获取文件名
            String fileName = file.getOriginalFilename();            
            System.out.println("上传的文件名为:" + fileName);
            
            // 获取文件的后缀名,比如图片的jpeg,png
            String suffixName = fileName.substring(fileName.lastIndexOf("."));
            System.out.println("上传的后缀名为:" + suffixName);
            
            // 文件上传后的路径
            fileName = UUID.randomUUID() + suffixName;
            System.out.println("转换后的名称:"+fileName);
            
            File dest = new File(filePath + fileName);
           
            try 
                file.transferTo(dest);
                
                return new JsonData(0, fileName);
             catch (IllegalStateException e) 
                e.printStackTrace();
             catch (IOException e) 
                e.printStackTrace();
            
            return  new JsonData(-1, "fail to save ", null);
        

文件大小配置,可以在启动类里面配置

@Bean 
public MultipartConfigElement multipartConfigElement()  
  MultipartConfigFactory factory = new MultipartConfigFactory(); 
  //单个文件最大 
  factory.setMaxFileSize("10240KB"); //KB,MB 
  /// 设置总上传数据总大小 
  factory.setMaxRequestSize("1024000KB"); 
  return factory.createMultipartConfig(); 

 

2.jar包方式运行Web项目

打包成 jar 包,需要增加 maven 依赖(注意:如果没加相关依赖,执行 maven 打包,运行后会报错:no main manifest attribute, in XXX.jar)

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

 然后使用 java 命令运行 jar 包。

技术图片

 

3.文件上传和访问需要指定磁盘路径

application.properties 中增加下面配置

web.images-path=/Users/jwen/Desktop
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:$web.upload-path

 



以上是关于Spring Boot 上传文件的主要内容,如果未能解决你的问题,请参考以下文章

企业级spring-boot案例-Spring Boot 上传文件(图片)

企业级spring-boot案例-Spring Boot 上传文件(图片)

Spring Boot(十七):使用 Spring Boot 上传文件

Spring Boot文件上传

Spring Boot 文件上传(单文件上传)

Spring Boot 文件上传(单文件上传)