动力商城-04 阿里云对象存储OSS

1.申请阿里云秘钥

2.创建Bucket

3.对应模块添加依赖

4.文件上传控制类

复制代码
@Api(tags = "文件上传接口管理")
@RequestMapping("admin/file")
@RestController
public class FileUploadController {

    @Resource
    private AliyunOSSConfig aliyunOSSConfig;


    /**
     * 上传文件:
     * 1.接口要求请求方式必须是post请求
     * 2.接收文件的对象的类型是:MultipartFile  该对象是SpringMVC提供的
     * @return   此处返回的是url地址
     */
    @ApiOperation("上传单个文件")
    @PostMapping("upload/element")
    public String uploadFile(MultipartFile file) {

        // 填写Bucket名称
        String bucketName = aliyunOSSConfig.getBucketName();
        // 以天为单位的名称,作为文件夹名称
        String newFolderName = DateUtil.format(new Date(), "yyyy-MM-dd");
        // 以时间戳作为文件的新名称
        String newFileName = DateUtil.format(new Date(), "HHmmssSSS");
        // 获取原文件的后缀名称
        String originalFilename = file.getOriginalFilename();
        String fileSuffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
        String objectName = newFolderName+"/"+newFileName+fileSuffix;

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(aliyunOSSConfig.getEndpoint(), aliyunOSSConfig.getAccessKeyId(), aliyunOSSConfig.getAccessKeySecret());
        URL url = null;
        try {
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, file.getInputStream());
            // 上传
            ossClient.putObject(putObjectRequest);
            // 创建上传文件访问的url地址
            url = ossClient.generatePresignedUrl(bucketName, objectName, DateUtil.offsetDay(new Date(), 365 * 10));
        } catch (Exception ce) {
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return url.toString();
    }
}

5.阿里云平台-对象存储OSS服务配置类

复制代码
public class AliyunOSSConfig {

    /**
     * 访问地址
     */
    private String endpoint;
    /**
     * bucket名称
     */
    private String bucketName;
    /**
     * 访问ID
     */
    private String accessKeyId;
    /**
     * 访问密钥
     */
    private String accessKeySecret;
}

6.bootstrap.yml配置 放到nacos远程配置中

复制代码
  aliyun:
    oss:
      endpoint: oss-cn-beijing.aliyuncs.com
      bucketName: ynu-mall
      accessKeyId: 
      accessKeySecret: 
相关推荐
知已难寻9 小时前
第 5 篇 · 云原生生态与实践:微服务、DevOps、可观测性与 Serverless
大数据·linux·服务器·微服务·云原生·云计算·devops
Vitaliy Kostrov(柯维远)9 小时前
Multi-CDN 决策闭环:QoE、成本、安全与内容正确性如何进入同一个策略引擎?
安全·网络安全·云计算·音视频·负载均衡·cdn
长不大的杨瑞杰10 小时前
OpenCode v2 远程开发实战:Web UI、Pair、SSH 隧道与 OpenTunnel 安全接入
人工智能·安全·云计算·软件工程·devops
T量子永生10 小时前
Android SISO 分布式编译集群配置方案
android·分布式·云计算·源代码管理
rich_Chan.10 小时前
阿里云百炼联网搜索教程:web_search 工具开启方法、web_extractor 网页抓取与 json 检索轨迹
前端·阿里云·json
whyutianict_vv13 小时前
云计算 HCIE 认证体系解析:HCIA/HCIP/HCIE 三级科目与知识边界
linux·运维·云计算
知已难寻21 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
Lvan的前端笔记1 天前
阿里云CDN
阿里云·云计算
小豆庄1 天前
AI换脸能骗过检测,视频脱敏为什么该回到本地
人工智能·yolo·阿里云·ai·ocr·视频
李兆龙的博客1 天前
从一到无穷大 #105:OpenAI Habitat II——多租户演进、全球读取优化与 CDC 平台
云计算·存储