"1. 首先创建一个 Spring Boot 项目并添 spring-boot-starter-web 依赖。 org.springframework.boot spring-boot-starter-web 2. 然后在 resources 录下的 static 目录中创建一个 upload.html 文件,内容如 .."

Spring Boot 文件上传

1. 首先创建一个 Spring Boot 项目并添 spring-boot-starter-web 依赖。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2. 然后在 resources 录下的 static 目录中创建一个 upload.html 文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="uploadFile" value="请选择文件">
    <input type="submit" value="上传">
</form>
</body>
</html>

这是一个很简单的文件上传页面,上传接口是 /upload 注意请求方法是 post , enctype 是 multipart/form-data

3. 接着创建文件上传处理接口,代码如下:

@RestController

public class FileUploadController {
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
    
    @PostMapping("/upload")
    public String upload2(MultipartFile uploadFile, HttpServletRequest req){
        // 获取文件名
        String fileName = uploadFile.getOriginalFilename();
        // 获取文件后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        // 重新生成文件名
        fileName = UUID.randomUUID()+suffixName;
        // 指定本地文件夹存储图片
        String filePath = "E:\\eclipse-workspace\\chapter\\bv_4_1\\src\\main\\resources\\static\\";
        try {
            // 将图片保存到 static 文件夹里
            uploadFile.transferTo(new File(filePath+fileName));
            String filePath2=req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+"/"+fileName;
            // 返回图片地址
            return filePath2;
        } catch (Exception e) {
            e.printStackTrace();
            return "失败";
        }
    }
}

4. 运行项目,在浏览器中输入 http://localhost:8080/upload.html 进行文件上传

360截图20190417055204856.jpg
上传成功界面:
360截图20190417055242429.jpg

刷新 static 出现对应的文件:
3.jpg

5. 大文件上传失败(解决办法)

以上上传文件限制为 1M 以内, 我们可以通过配置文件进行设置。源码如下:

#是否开启文件上传支持,默认为 true
#spring.servlet.multipart.enabled=true
#文件写入磁盘的闽值,默认为0
#spring.servlet.multipart.file-size-threshold=0
#上传文件的临时保存位直
#spring.servlet.multipart.location=E:\\temp
#是否延迟解析
#spring.servlet.multipart.resolve-lazily=false
#上传文件最大
spring.servlet.multipart.max-file-size=10MB
#多文件上传最大总值
spring.servlet.multipart.max-request-size=100MB

至此,一个简单的图片上传逻辑就完成了,对于开发者而 ,只需要专注于图片上传的业业务逻辑,而不需要在配置上花费太多时间。

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    549 引用 • 1163 回帖 • 905 关注
感谢    关注    收藏    赞同    反对    举报    分享
回帖    
请输入回帖内容...