动力商城-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: 
相关推荐
数据库知识分享者小北13 小时前
免费体验《自建 MySQL 迁移至 PolarDB 分布式 V2.0》
数据库·分布式·mysql·阿里云·云原生·polardb
咕噜企业分发小米15 小时前
阿里云AI教育产品如何助力老年教育?
人工智能·阿里云·云计算
天翼云开发者社区15 小时前
云上稳着陆,就找天翼云Landing Zone!
云计算·云治理
咕噜企业分发小米15 小时前
阿里云与华为云AI教育产品有哪些未来发展规划?
人工智能·阿里云·华为云
咕噜企业分发小米16 小时前
阿里云AI教育产品如何助力教育公平?
人工智能·阿里云·云计算
咕噜企业分发小米19 小时前
阿里云AI教育产品如何助力残障教育?
人工智能·阿里云·云计算
观测云19 小时前
腾讯云 PostgreSQL 最佳实践
postgresql·云计算·腾讯云
忧郁蓝调2619 小时前
Redis单节点主从复制数据迁移
数据库·redis·缓存·云原生·中间件·云计算·paas
weisian15120 小时前
入门篇--知名企业-16-阿里巴巴-4--阿里云平台:一整套数字时代的操作系统
人工智能·阿里云·云计算
石像鬼₧魂石20 小时前
Fail2ban 部署 + 阿里云服务器 SSH 登录 完整实战复盘
服务器·阿里云·ssh