阿里云图片上传

  • 配置环境变量,设置OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET

  • OSS_ACCESS_KEY_SECRET只有第一次创建AccessKey时可以看到

  • 配置对象存储的(地域节点)endpoind和(仓库名称)buckentName

  • 封装(地域节点)endpoind和(仓库名称)buckentName。

  • ```java
    @Component
    @ConfigurationProperties(prefix = "sky.alioss")
    @Data
    public class AliOssProperties {
        private String endpoint;
    //    private String accessKeyId;
    //    private String accessKeySecret;
        private String bucketName;
    }
  • 实现图片上传工具类

  • ```java
    @Component    //将AliOSSUtils封装到bean中
    public class AliOSSUtils {
        @Autowired
        private AliOssProperties aliOssProperties;
        /**
         * 实现上传图片到OSS
         */
        public String upload(MultipartFile file) throws Exception {
            String endpoint = aliOssProperties.getEndpoint();
            String bucketName = aliOssProperties.getBucketName();
            // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
    
            // 获取上传的文件的输入流
            InputStream inputStream = file.getInputStream();
    
            // 避免文件覆盖
            //获取原始文件名
            String originalFilename = file.getOriginalFilename();
            //截取后缀名称
            String extname = originalFilename.substring(originalFilename.lastIndexOf("."));
            //用uuid品酒额后缀名 让文件名唯一
            String fileName = UUID.randomUUID().toString() + extname;
    
            //上传文件到 OSS
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
            // 上传文件。
            ossClient.putObject(bucketName, fileName, inputStream);
    
            //文件访问路径
            String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
            // 关闭ossClient
            ossClient.shutdown();
            return url;// 把上传到oss的路径返回
        }
    }
  • 在Controller是实现图片上传案例

  • public class CommonController {
        @Autowired
        private AliOSSUtils aliOSSUtils;
        /*
        * 文件上传
        * */
        @PostMapping("/upload")
        @ApiOperation("文件上传")
        public Result<String> upload(MultipartFile file) throws Exception {
            log.info("文件上传:{}",file);
            String url = aliOSSUtils.upload(file);
            return Result.success(url);
        }
    }
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值