2023.11.23 云服务器实现 Spring Boot 项目文件上传并访问

环境介绍

  • 云服务器:京东云
  • 云服务器系统: CentOS 7.9
  • JDK 版本:1.8
  • Spring Boot 版本:2.7.17

具体步骤

步骤一

  • 首先我们得先创建一个 Spring Boot 项目
  • 创建如下目录结构

关于如何创建一个 Spring Boot 项目 请点击下方链接详细了解

创建 Spring Boot 项目详细步骤


步骤二

  • 使用 Xshell 操作你的云服务器
  • 此时我们将在云服务器的 root 目录下 设置一个 upload 目录,用来保存上传的文件

步骤三

  • 创建文件上传接口
  • 在 Spring Boot 项目中,需要创建一个控制器(Controller)来处理文件上传的请求
  • 此处可以使用 MultipartFile 对象来接收上传的文件
java 复制代码
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

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

@Controller
@ResponseBody
@RequestMapping("/file")
public class FileController {

    @RequestMapping("/only-file")
    public String upFile(@RequestPart("myfile")MultipartFile file) throws IOException {
//        获取上传文件的原始文件名,并从中提取出文件的后缀名
        String fileName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
//        生产一个文件路径,该路径位于 /root/upload 目录下,并且文件名是一个随机的 UUID 加上文件的后缀名
        String filePath = "/root/upload" + "/" + UUID.randomUUID() + fileName;
        file.transferTo(new File(filePath));
        return filePath + "upload success!";
    }
}
  • 此处我们在 controller 文件夹中创建一个 FileController 类用来处理文件上传的请求

重点:

  • 此处我们文件要存储的路径是以云服务器中 根目录 为基准来写的
  • 我们第二步在云服务器中的 root 目录下创建了一个 upload 目录用来存放上传文件
  • 所以此时的上传文件 理应存放在路径 "/root/upload" 目录下

步骤四

  • 因为我们的Spring Boot 项目是作为一个独立的 jar 包运行的
  • 所以我们需要在 Spring Boot 项目中进行一些配置,以便能够访问到存储在云服务器上的文件
  • 因此我们需要在 Spring boot 项目中添加一个配置类,用于将文件存储路径映射为静态资源路径
java 复制代码
package com.example.demo.configuration;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/uploads/**")
                .addResourceLocations("file:" + "/root/upload/");
    }
}
  • 此处我们在 configuration 文件夹中创建一个 WebMvcConfig 类用来处理文件上传的请求
  • 在这个配置类中,我们在 addResourceHandlers 方法中将我们存放上传文件的路径 映射为 " /uploads/** " 的静态资源路径
  • 最后我们便可以通过在浏览器中输入 http://服务器公网IP:8080/uploads/filename 来访问上传的文件

步骤五

  • 我们将写好的 Spring Boot 项目打包 并将打包好的 jar 包复制存储到云服务器 root 目录下
  • 打包完成后 其所生成的 jar 包就在 target 目录下
  • 在文件资源管理器中找到该 jar 包的位置

步骤六

  • 我们直接在云服务器启动我们 Spring Boot 项目
  • 使用 " java -jar (jar 包名)"
  • 此处我们的 jar 包名为 demo-0.0.1-SNAPSHOT.jar
  • 所以使用 java -jar demo-0.0.1-SNAPSHOT.jar 命令来启动 Spring boot 项目

步骤七

  • 使用 Postman 构造上传文件的 form 表单请求

想要了解和使用 Postman 请点击下方链接

Postman 安装和使用

请翻阅至该链接的末尾


步骤八

  • 在 Postman 下方查看 上传文件的新文件名
  • 直接在浏览器输入对应的 URL 地址,来访问你上传的文件
相关推荐
starzy19909 小时前
虚拟化解决方案全景:软件虚拟化、硬件虚拟化与 Docker 的位置
运维·docker·容器
Neighbor_OldY9 小时前
云上安全配置审计与误配置修复实战:从安全组、OSS、RAM到数据库的全栈排查复盘
大数据·运维·安全·云计算
开心大爆炸10 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
苏生Susheng11 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
2601_9623049112 小时前
把出片接进自动化流水线:2026 年批量 AI 视频生成工具的脚本契约与同类项目对照
运维·人工智能·自动化
曹牧12 小时前
C#:文本文件读取
服务器·前端·c#
Ruiery12 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
snow@li12 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
实战派K8S&DB12 小时前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi
苏生Susheng12 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施