springboot上传图片(到本地的一个文件夹)

准备工作:
1、数据库:
表中字段:
在这里插入图片描述

说明:我这里的数据库名:day8_7,一张user表,三个字段,id,username,avatar,其中username默认是aaa;
2、项目:
在这里插入图片描述
从上到下说明:
项目名:uploaddemo
包:com.rzy开头
controller代码:

package com.rzy.controller;


import com.rzy.mapper.UserMapper;
import com.rzy.pojo.User;
import com.rzy.util.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

//文件上传
@Controller
//跨域请求
@CrossOrigin
public class UploadController {

    @Autowired
    private UserMapper userMapper;

    @RequestMapping("/upload")
    public String upload(){
        return "upload";
    }


    @PostMapping("/toUpload")
    public String uploadAvatar(@RequestParam("file") MultipartFile file, Model model) {
        // 如果图片为空,显示错误信息
        if ((file.getOriginalFilename().isEmpty())) {
            model.addAttribute("error", "文件不能为空!!!");
            return "upload";
        } else {
            User user = new User();
            // 获取图片的名字
            String fileName = file.getOriginalFilename();
            // 图片存放的文件夹地址
            String filePath = "C:\\Users\\2020\\8\\7\\Desktop\\head\\";
            // 文件夹地址 + 名字 = 图片的路径
            String fileAddress = filePath + fileName;
            try {
                // 图片上传的工具类
                // 参数一:图片的编码格式的字节数组
                // 参数二:图片存放的文件夹地址
                // 参数三:图片的名字
                FileUtil.uploadFile(file.getBytes(), filePath, fileName);
                // 把图片路径写入数据库
                System.out.println(filePath);
                user.setAvatar(fileAddress);
                userMapper.uploadInfo(user);
            } catch (Exception e) {
                e.printStackTrace();
            }
            model.addAttribute("user", user);
            return "index";
        }
    }
}

这里业务简单,省去service层
mapper代码:

package com.rzy.mapper;

import com.rzy.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@Repository
@Mapper
public interface UserMapper {

    public void uploadInfo(User user);
}

pojo代码:

package com.rzy.pojo;

import lombok.Data;


@Data
public class User {
    private int id;
    public String username;
    private String avatar;
}

说明:这里使用了lombok

util代码:

package com.rzy.util;

import java.io.File;
import java.io.FileOutputStream;

public class FileUtil {

    //上传文件的工具类
    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();
    }
}

mapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.rzy.mapper.UserMapper">
    <insert id="uploadInfo" parameterType="com.rzy.pojo.User">
        INSERT INTO `user` (`avatar`)
        VALUES (#{avatar});
    </insert>
</mapper>

html代码:
upload.html用于发送页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>上传图片区</title>
</head>
<body>
选择图片:
<form enctype="multipart/form-data" method="post" action="/toUpload">
    <input type="file" name="file"/>
    <input type="submit" value="上传">
</form>
<span th:text="${error}" style="color: red;"></span>
</body>
</html>

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页</title>
</head>
<body>
<h1>头像上传成功!!!</h1>
</body>
</html>

application.yml中的配置

# mysql
spring:
  datasource:
    #MySQL配置
    driverClassName:  com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/day8_7?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
    username: root
    password: admin

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.rzy.pojo

server:
  port: 9000

部分展示:
在这里插入图片描述
数据库:
在这里插入图片描述
图片位置:
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例代码,演示如何使用Spring Boot将图像上传到本地文件夹并将其存储到数据库中,然后在前端使用。 首先,您需要在您的Spring Boot项目中添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 然后,您需要编写一个Controller来处理上传请求。以下是一个示例代码: ```java @RestController @RequestMapping("/api") public class ImageController { @Value("${upload.path}") private String uploadPath; @Autowired private ImageRepository imageRepository; @PostMapping("/upload") public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) throws IOException { String fileName = StringUtils.cleanPath(file.getOriginalFilename()); Path path = Paths.get(uploadPath + fileName); Files.write(path, file.getBytes()); Image image = new Image(fileName, file.getContentType(), path.toString()); imageRepository.save(image); return ResponseEntity.ok("File uploaded successfully"); } } ``` 在上面的代码中,我们首先使用@Value注释注入了一个名为“upload.path”的配置项,用于指定上传文件的存储路径。然后,我们注入了一个ImageRepository,用于将图像存储到数据库中。我们创建了一个名为“uploadImage”的POST请求处理程序,该处理程序使用@RequestParam注释来接收上传的文件。我们使用StringUtils.cleanPath()方法来确保文件名不包含任何非法字符,并使用Files.write()方法将文件写入本地文件夹中。我们创建了一个新的Image对象来保存文件的元数据和存储路径,并将其保存到数据库中。最后,我们返回一个成功的响应。 接下来,您需要编写一个Image实体类,用于将图像元数据存储到数据库中。以下是一个示例代码: ```java @Entity @Table(name = "images") public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 100) private String name; @Column(length = 100) private String type; private String path; // constructors, getters and setters } ``` 在上面的代码中,我们创建了一个名为“images”的表,用于存储图像。我们使用@Id注释将id字段标记为主键,并使用@GeneratedValue注释指定自动生成主键值。我们还使用@Column注释指定了name和type字段的长度,并添加了一个path字段来存储图像的存储路径。 最后,您需要编写一个简单的前端页面来上传图像。以下是一个示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Upload Image</title> </head> <body> <h1>Upload Image</h1> <form action="/api/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <br><br> <input type="submit" value="Upload"> </form> </body> </html> ``` 在上面的代码中,我们创建了一个简单的HTML表单,用于上传图像。我们使用<form>元素指定了上传图像的URL和请求方法,并使用<input>元素添加了一个文件选择器和一个提交按钮。 希望这个示例能够帮助您了解如何使用Spring Boot将图像上传到本地文件夹并将其存储到数据库中,然后在前端使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值