part16 中州养老AI+IOT后端管理系统
part16 中州养老AI+IOT后端管理系统
中州养老AI+IOT后端管理系统之OSS上传和PDF解析
1.1. 导入后端代码和前端管理端运行
前言
大家好,前面一天我们使用了GemDesign+Cursor+APifox完成了管理端页面设计和编码,让大家体验到了AICoding的强大功能。今天,我们将导入后端代码和前端管理端代码,并运行它们。


接下来导入首页、用户管理,老人管理,订单管理,房型管理,护理服务管理,体检报告,预约管理的后端代码和前端管理端代码。
首先,导入前端代码,在doc目录下的backend目录下
代码在微信群里,下载后,可以放到doc目录下的backend目录下,也可以放到其他非中文目录下

其次,将群里的代码拷贝到指定的目录,参考下图👇
将群里的包解压如下图1,然后导入到IDEA中,如图2:

导入后,运行前后端,如下图,即可开启我们的后台管理系统之旅。
除了XX的部分,其他部分都可以正常运行
总结
1.2. 阿里云OSS
阿里云OSS
阿里云是阿里巴巴集团旗下全球领先的云计算公司,也是国内最大的云服务提供商 。

云服务指的就是通过互联网对外提供的各种各样的服务,比如像:语音服务、短信服务、邮件服务、视频直播服务、文字识别服务、对象存储服务等等。
当我们在项目开发时需要用到某个或某些服务,就不需要自己来开发了,可以直接使用阿里云提供好的这些现成服务就可以了。比如:在项目开发当中,我们要实现一个短信发送的功能,如果我们项目组自己实现,将会非常繁琐,因为你需要和各个运营商进行对接。而此时阿里云完成了和三大运营商对接,并对外提供了一个短信服务。我们项目组只需要调用阿里云提供的短信服务,就可以很方便的来发送短信了。这样就降低了我们项目的开发难度,同时也提高了项目的开发效率。(大白话:别人帮我们实现好了功能,我们只要调用即可)
云服务提供商给我们提供的软件服务通常是需要收取一部分费用的。、

阿里云对象存储OSS(Object Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

在我们使用了阿里云OSS对象存储服务之后,我们的项目当中如果涉及到文件上传这样的业务,在前端进行文件上传并请求到服务端时,在服务器本地磁盘当中就不需要再来存储文件了。我们直接将接收到的文件上传到oss,由 oss帮我们存储和管理,同时阿里云的oss存储服务还保障了我们所存储内容的安全可靠。

那我们学习使用这类云服务,我们主要学习什么呢?其实我们主要学习的是如何在项目当中来使用云服务完成具体的业务功能。而无论使用什么样的云服务,阿里云也好,腾讯云、华为云也罢,在使用第三方的服务时,操作的思路都是一样的。

SDK:Software Development Kit 的缩写,软件开发工具包,包括辅助软件开发的依赖(jar包)、代码示例等,都可以叫做SDK。
简单说,sdk中包含了我们使用第三方云服务时所需要的依赖,以及一些示例代码。我们可以参照sdk所提供的示例代码就可以完成入门程序。
阿里云oss对象存储使用步骤
第三方服务使用的通用思路,我们做一个简单介绍之后,接下来我们就来介绍一下我们当前要使用的阿里云oss对象存储服务具体的使用步骤。

Bucket:存储空间是用户用于存储对象(Object,就是文件)的容器,所有的对象都必须隶属于某个存储空间。
下面我们根据之前介绍的使用步骤,完成准备工作:
- 注册阿里云账户(注册完成后需要实名认证)
- 注册完账号之后,就可以登录阿里云

- 通过控制台找到对象存储OSS服务

如果是第一次访问,还需要开通对象存储服务OSS


- 开通OSS服务之后,就可以进入到阿里云对象存储的控制台

- 点击左侧的 "Bucket列表",创建一个Bucket


总结
开通AliyunOSS,目的就是需要填充如下参数:
aliyun:
endpoint: https://oss-cn-beijing.aliyuncs.com //阿里云OSS的地址
accessKeyId: LTAI5tBCJP6m // 访问key
accessKeySecret: uY2YGnZnxxxxxxxxxx6siyrlm9aHt //秘钥
bucketName: qcxyyangeit //桶的名字
课堂作业
- 阿里云对象存储OSS是什么?有什么用途?🎤
- Bucket是什么意思?有什么作用?🎤
- 开通阿里云账号,然后创建一个Bucket存储文件。✏️
1.3. OSS上传
OSS集成
阿里云oss对象存储服务的准备工作以及入门程序我们都已经完成了,接下来我们就需要在案例当中集成oss对象存储服务,来存储和管理案例中上传的图片。


在新增的时候,上传的图像,而之所以需要上传的图像,是因为将来我们需要在系统页面当中访问并展示的图像。而要想完成这个操作,需要做两件事:
- 需要上传的图像,并把图像保存起来(存储到阿里云OSS)
- 访问图像(通过图像在阿里云OSS的存储地址访问图像)
- OSS中的每一个文件都会分配一个访问的url,通过这个url就可以访问到存储在阿里云上的图片。所以需要把url返回给前端,这样前端就可以通过url获取到图像。
我们参照接口文档来开发文件上传功能: 👇 👇
基本信息
- 请求路径:
/admin/upload
- 请求方式:
POST
- 接口描述:上传图片接口
- 请求路径:
请求参数
- 参数格式:
multipart/form-data
- 参数说明:
参数名称 参数类型 是否必须 示例 备注 file file 必须 - 参数格式:
响应数据
- 参数格式:
application/json
- 参数说明:
参数名 类型 是否必须 备注 code number 必须 响应码,1 代表成功,0 代表失败 msg string 非必须 提示信息 data object 非必须 返回的数据,上传图片的访问路径 - 响应数据样例:
{ "code": 200, "msg": "success", "data": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-0400.jpg" }
- 参数格式:
集成OSS到项目中代码实现:
- 导入依赖和配置文件
aliyun:
endpoint: https://oss-cn-beijing.aliyuncs.com
accessKeyId: LTAI5tBryrxxxxmHLL4eCJP6m
accessKeySecret: uY2YGnZnvxxxxcF8v6K6siyrlm9aHt
bucketName: qcxyyangeit
<!--阿里云OSS-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
引入阿里云OSS上传文件工具类(由官方的示例代码改造而来) 👇 👇
com.xx.common 工具包
/**
* 阿里云 OSS 工具类
*/
@Component
public class AliOSSUtils {
// 区域
@Value("${aliyun.endpoint}")
private String endpoint;
// 访问id
@Value("${aliyun.accessKeyId}")
private String accessKeyId;
// 秘钥
@Value("${aliyun.accessKeySecret}")
private String accessKeySecret;
// 桶的名称
@Value("${aliyun.bucketName}")
private String bucketName;
/**
* 实现上传图片到OSS
*/
public String upload(MultipartFile file) throws IOException {
// 获取上传的文件的输入流
InputStream inputStream = file.getInputStream();
// 避免文件覆盖
String originalFilename = file.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//上传文件到 OSS
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, fileName, inputStream);
//文件访问路径
String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
// 关闭ossClient
ossClient.shutdown();
return url;// 把上传到oss的路径返回
}
}
修改UploadController代码: 👈 👈
@Slf4j
@RestController
@RequestMapping("/admin")
@Tag(name = "上传接口")
public class UploadController {
@Autowired
private AliOSSUtils aliOSSUtils;
@PostMapping("/upload")
@Parameter(description = "上传接口")
public AjaxResult upload(@Parameter(description = "上传的文件", required = true) @RequestBody MultipartFile file) throws IOException {
log.info("上传源文件文件名字:{}",file.getOriginalFilename());
//调用阿里云OSS工具类,将上传上来的文件存入阿里云
String url = aliOSSUtils.upload(file);
//将图片上传完成后的url返回,用于浏览器回显展示
return AjaxResult.success("上传成功", url );
}
}
进行页面测试,无论是员工,还是老人,还是房型,还是服务,都可以上传成功。

总结
课堂作业
- 🚩 注册阿里云账号,开通Oss服务,完成上述服务,并且能够使用清晰的描述出集成oss流程。(可以使用流程图工具进行绘制)