Spring Boot搭建简单的图片服务器

环境介绍

这里使用的是Spring Boot 2.3.4,需要在pom文件中引入Spring Boot创建web项目的常规依赖

依赖如下:

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

最终效果是实现一个接口,用来提供上传图片的服务,最终将图片保存到服务器上,同时给前端返回保存后的图片访问路径,实现一个简单的图片服务器。

步骤

1.创建文件夹

我们需要在服务器上创建一个文件夹,用来保存用户上传的图片。这里我是在本地机器上运行项目,我在E盘下创建了一个upload文件夹。

image-20210111194619577

2.配置文件

在Spring Boot的配置文件中我们自定义一个变量,用来存放这个文件夹的路径,方便我们后期对文件夹路径进行修改。在项目中使用该路径是可以直接注入。

在application.yml中添加下面配置

user.filepath: E:/upload/

如果没有使用yaml格式的配置文件,而是使用.properties配置文件,则在application.properties中添加下面配置:

user.filepath=E:/upload/

3.自定义资源映射

我们需要一个虚拟的路径映射到我们服务器中图片的地址,这样我们就可以通过这个虚拟地址和我们的图片的文件名称来访问我们上传的图片了。

这里通过实现WebMvcConfigurer接口,来达到我们自定义资源映射的目的。创建一个配置类CustomWebConfiguration,内容如下:

@Configuration
public class CustomWebConfiguration implements WebMvcConfigurer {

    // 注入我们配置文件中写好的图片保存路径
    @Value("${user.filepath}")
    private String filePath;

    // 自定义资源映射
    // 访问图片示例:http://localhost:3000/api/images/图片名称.jpg
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/api/images/**")
                .addResourceLocations("file:"+ filePath);
    }
}

注意:不要忘记打上@Configuration注解

4.编写Controller层

在Controller层中编写一个POST请求方式的方法,用来处理上传图片的请求

代码如下:

@RestController
@RequestMapping("/api/img")
public class ImageController {

    // 注入配置中图片保存路径
    @Value("${user.filepath}")
    private String filePath;



    // 处理上传图片请求的方法
    // @RequestPart("pic")MultipartFile 上传文件时携带图片的key定义为pic
    @RequestMapping(value = "/upload",method = RequestMethod.POST,consumes = "multipart/form-data")
    public String upload(@RequestPart("pic")MultipartFile multipartFile){

        // 生成一个随机的名称,避免文件名重复
        UUID uuid = UUID.randomUUID();
        // 获取原文件名称
        String originalFileName = multipartFile.getOriginalFilename();
        // 获取原文件的后缀
        String fileSuffix = originalFileName.substring(originalFileName.lastIndexOf('.'));
        // 保存文件
        File file = new File(filePath + uuid + fileSuffix);
        try {
            multipartFile.transferTo(file);
        } catch (IOException e) {
            e.printStackTrace();
            return "error";
        }
        // 返回图片的完整访问路径,这地方ip和端口可以改为动态获得,这样在部署到服务器上时无需改变,为了方便起见这里直接写死了
        return "http://localhost:3000/api/images/"+uuid+fileSuffix;
    }

}

5.上传测试

启动项目,我们使用postman发起测试请求

image-20210111203256014

注:我跑的项目中有统一的响应数据处理,所以返回值是个json对象,测试应该仅仅返回图片地址的完成路径

测试是否可以访问该图片
在这里插入图片描述

个人公众号🐕

我的个人公众号已经开通了,正在按计划建设中,以后的文章会第一时间发布在公众号中,同时也给大家准备了亿点学习资料,关注公众号后台发送:学习资料

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Spring Boot 是一个开源 Java 框架,它可以帮助开发者快速构建基于 Spring 框架的应用程序。下面是一个简单Spring Boot 搭建的步骤: 1. 安装 Java JDK 和 Maven 在开始构建 Spring Boot 应用程序之前,需要先下载并安装 Java JDK 和 Maven。可以在 Oracle 官网上下载 Java JDK,而 Maven 可以在其官网上获得。 2. 创建 Spring Boot 项目 使用 Maven 命令创建一个 Spring Boot 项目: ``` mvn archetype:generate -DgroupId=com.example -DartifactId=myproject -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ``` 这个命令会使用 maven-archetype-quickstart 模板创建一个基本的 Maven 项目,其中 com.example 是项目的包名,myproject 是项目的名称。 3. 添加 Spring Boot 依赖 在 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 这个依赖会包含 Spring Boot Web 应用程序所需的所有依赖项。 4. 创建 Spring Boot 应用程序 在 src/main/java/com/example/myproject 目录下创建一个名为 MyProjectApplication 的类,并添加以下内容: ``` package com.example.myproject; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MyProjectApplication { public static void main(String[] args) { SpringApplication.run(MyProjectApplication.class, args); } } ``` @SpringBootApplication 注解会启用 Spring Boot 应用程序的自动配置机制。 5. 运行 Spring Boot 应用程序 在命令行中输入以下命令以运行应用程序: ``` mvn spring-boot:run ``` 这个命令会启动一个嵌入式的 Tomcat 服务器,并在浏览器中打开 http://localhost:8080/,显示“Hello World”页面。 至此,一个简单Spring Boot 应用程序已经搭建完成。可以继续添加功能和业务逻辑以构建更复杂的应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java.util.Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值