OSS - Object Storage Service - 对象储存
    questions:

    • 它在项目是处理什么问题的?
      • 存储平台运行需要用到的图片视频等文件,主要是图片
    • 大概写法是什么?
    • 对于团队有什么好处?
      • 快捷方便…?
    • 有没有其他的替代方案
      • 其他的选择就是放在自己的服务器上?
      • 不过问题就是不稳定,有安全隐患
    • 替代了什么老的技术,解决了老技术的什么问题?(备选)

    文件上传

    • 项目中采用的文件上传方式是:简单上传 - 文件流上传
    • main idea:
      • 文件通过 post method 提交到 controller,controller 的接受文件的参数类型是 MultipartFile
      • controller 再将文件传递给 service 部分,再完成真正的文件上传动作
      • 上传动作所需要的一些固定参数:endpoint, accessKeyId, accessKeySecret, bucketName 等都是作为参数定义在工具类中的,通过调用工具类的属性获得这些常量
      • 上传文件的命名
        • 在文件名前面加上一段随机数字来避免文件名重复
        • 在文件名前面再加上 “yyyy/MM/dd” 的日期来实现文件按日期分类
        • 最终的 fileName 为:”yyyy/MM/dd/“ + randomNumber + fileName
      • 文件上传
        • OSSClientBuilder -> ossClient -> ossClient.putObject() -> ossClient.shutdown()
        • OSSClientBuilder().build() 方法创建 ossClient 对象(参数:endpoint, accessKeyId, accessKeySecret)
        • ossClient.putObject() 方法将文件上传,ossClient.putObject(bucketName, fileName, inputStream)
        • 通过自己拼装获得上传文件的访问路径:
        • “https://“ + bucketName + “.” + endpoint + “/“ + fileName

    Question:
    在项目定义常量对象使用的方法是:将常量定义到 application.yml 中,然后通过 @Value 注解为类中的私有属性赋值该常量,然后再通过 afterPropertiesSet() 方法,在该类的实例被添加到容器时,将私有属性的值赋予给公开属性。在实际工作中也是这样子做的吗?可以用 final & static 关键字来代替?

    Date time = new Date() // 此处的 Date() 是属于 java.util 中的类,同时可以通过 application.yml 中的 jackson 配置来设定默认的日期格式,但是在 oss 中似乎是使用其他的日期生成方法
    -> new Datetime() // import org.joda.time.DateTime;