Java后端tlias员工部门管理-前后端联调-阿里云OSS-5

当完成了员工和部门管理的两大模块的所有基本功能,那么我们接下来就先进行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,大家敬请期待!!

点个关注,收藏,更新路上不迷路!!

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值