您的位置:首页 > 编程语言 > Java开发

五、Spring Boot文件上传项目

2019-04-19 07:34 591 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/cheng_0325/article/details/89392352

一、项目结构

  • statis这个目录里面应该存放一些静态文件,比如 css、js、image并且可以直接被外部访问到。而templates这个目录则存放一些静态页面,如jsp、html、ftl。并且template这个目录里的内容外部是访问不到的。

二、Spring Boot 编码过程

1、创建demo

创建第一个Spring Boot项目文件,可参考:《第一个Spring Boot 项目

2、编写html页面:
picUpload
<!DOCTYPE html>
<html lang="en">
<head>
<title>pictureUploading</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8 ">
</head>
<body>
<form enctype="multipart/form-data" method="post" action="/upload">
文件:<input type="file" name="fileUpload"/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
  • 注意:form标签里的enctype属性指定为:
    multipart/form-data
    。按照规范,我们将picUpload.html文件放到templates目录下。
3、页面跳转
  • 现在通过:localhost:8080/index.html是访问不到该页面的。按照以前学习SpringMVC的经验,应该写一个controller,通过这个controller跳转到picUpload.html页面上去,再返回给用户。

  • ToHtmlController类:

    package com.example.demo;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    /**
    * @author ${fwc}
    * @data 2019/4/18
    * @time 17:32
    */
    @Controller
    public class ToHtmlController {
    @RequestMapping("/picUpload")
    public String picUpload(){
    return "picUpload";
    }
    }
4、添加依赖

指明模板引擎,这里我们使用thymeleaf,在pom.xml文件中添加如下依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
5、测试测试页面启动效果

6、配置文件上传的文件大小限制

application.properties
配置文件中添加如下代码:

# 上传文件总的最大值
spring.servlet.multipart.max-request-size=500MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=50MB
  • spring.servlet.multipart.max-file-size
    限制单个文件的最大值
  • spring.servlet.multipart.max-request-size
    限制上传的多个文件的总大小
7、处理表单
  • 当选择完文件,点击上传按钮后,form表单会按照action属性值的url进行后端访问ation="/upload",此时我们应该写一个controller来接收前端传来的文件,并将文件存储到指定目录下。

  • UploadController.java
    类:

    package com.example.demo;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    
    /**
    * @author ${fwc}
    * @data 2019/4/17
    * @time 19:45
    */
    @Controller
    public class UploadController {
    private static final Logger LOGGER = LoggerFactory.getLogger(UploadController.class);
    
    @PostMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam("fileUpload") MultipartFile file) {
    if (file.isEmpty()) {
    return "上传失败,请选择文件";
    }
    
    //上传保存的文件名
    String fileName = file.getOriginalFilename();
    //上传保存路径
    String filePath = "/usr/local/springboot-workspace/temp/";
    
    File dest = new File(filePath + fileName);
    try {
    file.transferTo(dest);
    LOGGER.info("上传成功");
    return "上传成功";
    } catch (IOException e) {
    LOGGER.error(e.toString(), e);
    }
    return "上传失败!";
    }
8、pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

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

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

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

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

</plugins>
</build>

</project>

四、运行测试


备注:注意上传后文件的存储路径

五、项目代码

链接:https://pan.baidu.com/s/1Fps1ku3yPb950ACqPhlK_A
提取码:2p1z

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: