当前位置: 首页 > news >正文

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 对象来接收上传的文件
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 项目中添加一个配置类,用于将文件存储路径映射为静态资源路径
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 {@Overridepublic 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 地址,来访问你上传的文件

http://www.lryc.cn/news/241533.html

相关文章:

  • SAP实现多个统御科目:特殊总账SGL+备选统驭科目Alternative Reconciliation Accounts
  • 【数据分享】2023年我国省市县三级的瞪羚企业数量(免费获取/Excel/Shp格式)
  • 用于计算机屏幕安全摄像头系统:Screen Anytime Crack
  • Redis深入理解-Socket连接建立流程以及文件事件处理机制
  • Docker run 命令
  • Vue中的$nextTick的作用
  • 浅谈Linux bash脚本----getopts获取脚本POSIX标准传参
  • PyCharm玩转ESP32
  • uniapp自定义导航栏返回按键
  • 「可移动工具车」物料管理的得力助手
  • 授时小课堂——北斗卫星信号和GPS卫星信号谁更强?
  • 网站会遭受那些攻击,要怎么应对
  • 后端-锁专题:synchronized(java对象结构、锁的类型、锁升级流程...)
  • vscode在运行c语言时,无法scanf输入
  • ROLLUP 的几点说明(十七)
  • 项目经理面试题持续更新
  • 基于JavaWeb+SSM+Vue校园水电费管理小程序系统的设计和实现
  • 主从复制读写分离?
  • h5小游戏-盖楼游戏
  • 量子计算的发展
  • YOLOv3老矣尚能战否?基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统,我们来与YOLOv5进行全方位对比评测
  • 【lodash】 关于Some的相关用法
  • JavaScript基础—引入方式、注释和结束符、输入和输出、变量、常量、数据类型、检测数据类型、类型转换、综合案例—用户订单信息
  • 替换jar文件中的jar文件中的class
  • 基于51单片机倾角MPU6050老人跌倒远程GSM短信报警器+源程序
  • 代码规范有用吗?听听100W年薪谷歌大佬怎么说!
  • 最详细的软件测试面试题整理与分析
  • 【Vue】浏览器安装vue插件
  • 人人都会Blazor —— 3.3 参数
  • 【数据结构初阶】栈和队列