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.hqwc.cn/news/214627.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARKit增加一个盒子

ARKit增加一个盒子 体验一下ARKit的能力,在室内随便加点小球,然后在AR中显示出来。 效果如下图: 以下为操作流程。 新建项目 新建一个空项目,项目一定要选择 Augmented Reality App,能够省很多的事。 之后的 conte…

想问问各位大佬,网络安全这个专业普通人学习会有前景吗?

网络安全是一个非常广泛的领域,涉及到许多不同的岗位。这些岗位包括安全服务、安全运维、渗透测试、web安全、安全开发和安全售前等。每个岗位都有自己的要求和特点,您可以根据自己的兴趣和能力来选择最适合您的岗位。 渗透测试/Web安全工程师主要负责模…

SIP协议在语音通信的应用方式

在企业语音通信的过程中,SIP协议支持的网络通信技术通过网络为用户提供了无数的通信便利,已成为企业不可或缺的重要通信技术。由于SIP协议是语音通信帮助企业实现这些优势的原因,因此了解支持这些呼叫的SIP协议的上下文至关重要。 什么是SIP?…

累计定点160+车型,商汤绝影凭什么领跑规模化量产?

2023广州车展火热进行,智能化技术加速“内卷”。 商汤绝影多款合作量产车型亮相2023广州车展,包括昊铂 GT、传祺ES9、E8系列和本田雅阁、捷途旅行者、极氪X等,全方位呈现在智能驾驶和智能座舱领域的最新成果,以AI“新科技”&…

【快速解决】使用IDEA快速搭建SpringBoot项目(超详细)

前言 Spring Boot是Spring Framework的一款脚手架式框架,可以帮助开发者快速构建基于Spring的企业级应用程序。本篇博客将介绍如何使用IntelliJ IDEA(以下简称IDEA)来快速搭建一个Spring Boot项目。 目录 ​编辑 前言 使用IDEA快速搭建Spri…

社区物联网云服务架构设计

文章目录 1 摘要2 架构图2.1 社区物联网云服务网络拓扑图2.2 社区物联网云服务通讯流程图2.3 社区远程开锁功能流程图 3 应用场景 1 摘要 随着社区管理越来越智能化,社区物联网升级与改造的市场空间也越来越大。社区物联网包含楼宇对讲、门禁门锁、通道闸等等设备系…

如何一键消除图片里的水印?图片去水印教程一看就会!

如何一键消除图片水印?在现今的数字时代,我们常常会遇到带有水印的图片,而传统的方法往往费时且复杂,让我们感到困扰。那么如何一键消除图片水印呢?今天,我们为您推荐一款非常实用的去水印软件,…

Elasticsearch知识

目录 Elasticsearch逻辑设计和物理设计 逻辑设计物理设计Elasticsearch原理 倒排索引文档的分析过程保存文档搜索文档写数据的底层原理 数据刷新(fresh)事务日志的写入ES在大数据量下的性能优化 文件系统缓存优化数据预热文档(Document&…

【EI会议征稿】第三届电子信息技术国际学术会议(EIT 2024)

The 3rd International Conference on Electronic Information Technology 第三届电子信息技术国际学术会议(EIT 2024) 电子信息工程在我国信息化产业的发展过程中举足轻重,且随着现代社会的发展,航空航天领域、制造业领域和智能…

基于Python的海量豆瓣电影、数据获取、数据预处理、数据分析、可视化、大屏设计项目(含数据库)

目录 项目介绍研究背景国内外研究现状分析研究目的研究意义研究总体设计网络爬虫介绍豆瓣电影数据的采集数据预处理大数据分析及可视化豆瓣影评结构化分析 大屏可视化文本可视化总结每文一语 项目介绍 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博…

数据资源和数据资产的区别是什么?

数据资源:狭义的数据资源是指数据本身,即企业运作中积累下来的各种各样的数据记录,如客户记录、销售记录、人事记录、采购记录、财务数据和库存数据等。广义的数据资源涉及数据的产生、处理、传播、交换的整个过程,包括数据本身、…

掌握高效创作的艺术,利用AI轻松生成高质量文章,提升你的写作效率!

作为现代人,写作已经成为我们生活中必不可少的一部分。无论是工作报告、学术论文还是个人博客,都需要我们付出大量的时间和精力来创作。然而,有时候我们会因为思路阻塞、语言表达能力不足等原因而无法高效地完成写作任务。为了解决这个问题&a…