• 将文件上传到阿里云OSS详细步骤


      阿里云文件上传的完整步骤:
            一:先注册阿里云账号,创建好对象存储的空间
                    1.没有账号的小伙伴先点击注册,根据手机号注册登录

                     2.创建Bucket,名字需要记住        

                     3.创建AccessKey

      

     阿里云已经创建好了,接下来我们来实现代码

    代码实现
            二:实现步骤
                    1.在pom.xml文件中导入坐标

               

    1. <dependency>
    2.     <groupId>com.aliyun.oss</groupId>
    3.     <artifactId>aliyun-sdk-oss</artifactId>
    4.     <version>${aliyun.sdk.oss}</version>
    5. </dependency>


                     2.在yml文件配置对应属性

                    3.定义一个OSS的配置的实体类

    1. package com.sky.properties;
    2. import lombok.Data;
    3. import org.springframework.boot.context.properties.ConfigurationProperties;
    4. import org.springframework.stereotype.Component;
    5. @Component
    6. @ConfigurationProperties(prefix = "sky.alioss")
    7. @Data
    8. public class AliOssProperties {
    9. private String endpoint;
    10. private String accessKeyId;
    11. private String accessKeySecret;
    12. private String bucketName;
    13. }

                     4.定义一个OSS的配置类

    1. package com.sky.config;
    2. import com.sky.properties.AliOssProperties;
    3. import com.sky.utils.AliOssUtil;
    4. import lombok.extern.slf4j.Slf4j;
    5. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    6. import org.springframework.context.annotation.Bean;
    7. import org.springframework.context.annotation.Configuration;
    8. /**
    9. * 配置类,用于创建AliOssUtil对象
    10. */
    11. @Configuration
    12. @Slf4j
    13. public class OssConfiguration {
    14. @Bean
    15. @ConditionalOnMissingBean
    16. public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){
    17. log.info("开始创建阿里云文件上传工具类对象:{}",aliOssProperties);
    18. return new AliOssUtil(aliOssProperties.getEndpoint(),
    19. aliOssProperties.getAccessKeyId(),
    20. aliOssProperties.getAccessKeySecret(),
    21. aliOssProperties.getBucketName());
    22. }
    23. }

                    5.定义utils工具类

    1. import com.aliyun.oss.OSS;
    2. import com.aliyun.oss.OSSClientBuilder;
    3. import org.springframework.beans.factory.annotation.Value;
    4. import org.springframework.stereotype.Component;
    5. import org.springframework.web.multipart.MultipartFile;
    6. import java.io.*;
    7. import java.util.UUID;
    8. /**
    9. * 阿里云 OSS 工具类
    10. */
    11. public class AliOSSUtils {
    12. @Value("${aliyun.oss.endpoint}")
    13. private String endpoint;
    14. @Value("${aliyun.oss.accessKeyId}")
    15. private String accessKeyId;
    16. @Value("${aliyun.oss.accessKeySecret}")
    17. private String accessKeySecret;
    18. @Value("${aliyun.oss.bucketName}")
    19. private String bucketName;
    20. /**
    21. * 实现上传图片到OSS
    22. */
    23. public String upload(MultipartFile file) throws IOException {
    24. // 获取上传的文件的输入流
    25. InputStream inputStream = file.getInputStream();
    26. // 避免文件覆盖
    27. String originalFilename = file.getOriginalFilename();
    28. String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
    29. //上传文件到 OSS
    30. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    31. ossClient.putObject(bucketName, fileName, inputStream);
    32. //文件访问路径
    33. String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
    34. // 关闭ossClient
    35. ossClient.shutdown();
    36. return url;// 把上传到oss的路径返回
    37. }
    38. }

                    6.实现controller层代码

    1. /**
    2. * 通用接口
    3. */
    4. @RestController
    5. @RequestMapping("/admin/common")
    6. @Api(tags = "通用接口")
    7. @Slf4j
    8. public class CommonController {
    9. @Autowired
    10. private AliOssUtil aliOssUtil;
    11. /**
    12. * 文件上传
    13. * @param file
    14. * @return
    15. */
    16. @PostMapping("/upload")
    17. @ApiOperation("文件上传")
    18. public Result upload(MultipartFile file){
    19. log.info("文件上传:{}",file);
    20. try {
    21. //原始文件名
    22. String originalFilename = file.getOriginalFilename();
    23. //截取原始文件名的后缀 dfdfdf.png
    24. String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
    25. //构造新文件名称
    26. String objectName = UUID.randomUUID().toString() + extension;
    27. //文件的请求路径
    28. String filePath = aliOssUtil.upload(file.getBytes(), objectName);
    29. return Result.success(filePath);
    30. } catch (IOException e) {
    31. log.error("文件上传失败:{}", e);
    32. }
    33. return Result.error(MessageConstant.UPLOAD_FAILED);
    34. }
    35. }

  • 相关阅读:
    使用Apache ECharts同时绘制多个统计图表
    C++入门应该注意的问题(内联函数和C的宏)
    2022年陕西水利水电施工安全员模拟试题及答案
    农村公交与异构无人机协同配送优化
    【光学】基于matlab GUI光栅条纹投影生成【含Matlab源码 2118期】
    C#,哈密顿环问题(Hamiltonian Cycle problem)的算法与源程序
    互联网Java工程师面试题·Elasticsearch 篇·第二弹
    分享一下蛋糕店在微信小程序上可以实现什么功能
    TSN协议解读系列 | (3) Qci:说书唱戏劝人方
    Linux账户组管理及权限练习
  • 原文地址:https://blog.csdn.net/m0_73499047/article/details/132925950