当完成了员工和部门管理的两大模块的所有基本功能,那么我们接下来就先进行yml文件配置。
Yml文件配置
为什么要换
我们需要把这个application.properties配置文件改成application.yml,因为对比了其他的配置文件的格式,有诸如一下优点
中文变成???
那么我们进入application.properties,中文变成了????这是因为我们的配置文件的编码不是UTF-8的格式,尽管你右下角是UTF-8,但是配置文件不是默认的UTF-8
所以我们只需要在IDEA以此打开Settings-->Editor-->File Encodings
把下面四个都改成UTF-8,钩也勾上去,然后你再将将问号改为你需要的汉字。
重启IDEA,再次查看你的.properties文件就会发现再没有变成问号了
但是请注意:这个修改方法只能用于修改该项目,不能完全改变IDEA的编码格式,新建一个项目会发现编码格式又变回默认的GBK
想要完全更改需要先关闭项目,选择全局配置
然后再像刚才那样选择UTF-8,勾选,就可以了
这时候再打开你的项目,再次查看你的.properties文件就会发现再没有变成问号了
文件自动转换成yml
当里面的配置文件很多的时候。手写肯定耗时间,我们下载这个插件
如果下载失败没关系,第二天再试试说不定就行了。因为我们访问的是海外的网,网速会很慢,而且会被限制。除非你有梯子
然后右键点击文件,选择Convert那个第一个选项,就可以自动转换成yml格式的文件了
如图
阿里云OSS
我们前端保存的图片会去哪,我们本地的数据库吗?那么当有许多人用你这台服务器,那你的电脑不久很快没有空间了。所以我们可以把图片保存到云服务器上来存储。
这里我以阿里云OSS为例。
浏览器搜索阿里云,然后登录,点击如下图的控制台
将鼠标移至产品,找到并单击对象存储OSS,打开OSS产品详情页面。在OSS产品详情页中的单击立即开通。
点击对象存储服务OSS
他会弹出这个界面,也可能没弹出,你就开通一下就行了(没要你交钱)
这时候你点击bucket列表创建bucket
如下图,其他的默认就行,就是你的读写取信必须是公共读
然后点击SDK下载,选择SDK示例,然后在文档中心打开
然后选择java,先选择安装,因为我是JDK19,所以上下两个的配置我都要复制到pom.xml文件当中
如图所示。记得点击右上角的maven刷新!
然后在简单上传选择文件上传
直接把那段代码复制,在项目的本地测试类中新建一个FDemo的java代码,粘贴上去,代码爆红的话是因为你配置的pom.xml没有刷新!
然后你去改代码,就该四个部分
第一个就是,你是南京,就改成nanjing,北京就改成beijing。
之后你要创建一个accessKey ID和Sercet,点击你的头像,选择如下
你点击创建,输入验证码,你就会收到AccessKey ID和AccessKey Sercret,你保存好,直接复制到某个txt文件里存着。
之后你就把他们添加到环境变量里去。
你打开设置,选择系统,拉到最底下,选择系统信息,高级系统设置
然后按如下图,创建OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET两个环境变量,把你刚才保存的复制进去。之后点击确定确定退出即可。
然后你去启动代码,到你的bucket列表查看,有你的文件说明没问题
配置阿里云
1.现在你的application.yml编写你的配置,如下,把这个咱贴到你那,然后把xxxx改成你的
aliyun:
oss:
endpoint: https://oss-cn-xxxxx.aliyuncs.com # 域名
accessKeyId: xxxxxxxxxxx # 密钥的ID
accessKeySecret: xxxxxxxxxxx # Secret密钥
bucketName: xxxxxxxxx # bucket名称
2.然后配置最大文件大小和最大文件请求大小,这个配置放在spring下
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB
3.然后新建一个工具类,里面有AliOSSProperties和AliOSSUtils
AliOSSUtils
package com.itheima.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
/**
* 阿里云 OSS 工具类
*/
@Component
public class AliOSSUtils {
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketName;
@Autowired
private AliOSSProperties aliOSSProperties;
/**
* 实现上传图片到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的路径返回
}
}
AliOSSProperties
package com.itheima.utils;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
//我个人感觉直接用value方便一点,但是用这种封装成对象再拿出来,起到解耦作用。
public class AliOSSProperties {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
把这两个代码直接全复制粘贴,不用做修改
测试
然后我们来测试一下
在Controller层新建一个UploadController
import com.itheima.pojo.Result; import com.itheima.utils.AliOSSUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @Slf4j @RestController public class UpLoadController { @Autowired private AliOSSUtils aliOSSUtils; //上蹿到阿里云的OSS @PostMapping("/upload") public Result upload(MultipartFile image) throws IOException { log.info("文件上传{}",image.getOriginalFilename()); String url = aliOSSUtils.upload(image); log.info("文件访问的url={}",url); return Result.success(url); } }
这段代码复制进去,也不用修改
之后启动整个程序,在postman编写一个接口看看,如下图
然后点击send,没问题,那么文件上传就没问题。 你点击那个data的链接是可以直接访问的,此时在你的bucket也是可以直接访问的。
前后端联调
接下来就要拿到前端的ngnix服务器的资源。
链接: https://pan.baidu.com/s/1rIzwtZI4NcQDSQWlbrL1Ew?pwd=6666 提取码: 6666
去把这个下载下来,放在没有中文的路径当中,然后点击ngnix.exe之后,
启动整个后端程序,
然后在浏览器输入localhost:90回车,选择部门管理和员工管理,能正确加载数据就好了
我们来测试下阿里云OSS行不行,如图,如果你上次图片之后能在头像那边看到说明这是没问题的。
至此今天的内容结束,圆满完成!
后面我会出全局异常处理和登录校验JWT,大家敬请期待!!
点个关注,收藏,更新路上不迷路!!
标签:Java,String,tlias,OSS,private,oss,org,import,联调 From: https://blog.csdn.net/yf15996280470/article/details/140317830