当前位置: 首页 > 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 地址,来访问你上传的文件

相关文章:

  • 【微信小程序】保存多张图片到本地相册 wx.saveImageToPhotosAlbum
  • R语言30分钟入门
  • Tomcat的安装及其使用
  • 【接口自动化】selenium库也有大用场(获取cookie)
  • 计算机网络:应用层(上篇)
  • 基于python和定向爬虫的商品比价系统
  • 3D点云目标检测:VoxelNex解读
  • RESTful API,以及如何使用它构建 web 应用程序
  • C++如何在excel中同时插入多行
  • 数据可视化:用图表和图形展示数据
  • 传统算法:使用 Pygame 实现线性查找
  • 数据结构-二叉树(1)
  • 2017年五一杯数学建模B题自媒体时代的消息传播问题解题全过程文档及程序
  • 万界星空科技仓库管理wms系统
  • plist文件在线生成网页配置苹果ios系统ipa文件下载
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • CAP理论的例子讲解
  • CSS中外联样式表代表的含义
  • es6要点
  • express如何解决request entity too large问题
  • HTTP请求重发
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Python学习之路13-记分
  • vue中实现单选
  • 闭包--闭包作用之保存(一)
  • 浮现式设计
  • 关于字符编码你应该知道的事情
  • 后端_ThinkPHP5
  • 技术:超级实用的电脑小技巧
  • 跨域
  • 力扣(LeetCode)21
  • 面试题:给你个id,去拿到name,多叉树遍历
  • const的用法,特别是用在函数前面与后面的区别
  • Java总结 - String - 这篇请使劲喷我
  • PostgreSQL之连接数修改
  • # .NET Framework中使用命名管道进行进程间通信
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #include<初见C语言之指针(5)>
  • (03)光刻——半导体电路的绘制
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (独孤九剑)--文件系统
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (四)模仿学习-完成后台管理页面查询
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)大型网站架构演变和知识体系
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET企业级应用架构设计系列之开场白
  • .py文件应该怎样打开?
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @selector(..)警告提示
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [bzoj1912]异象石(set)