OSS整合

Oss是阿里的一个云存储服务,可以上传和下载文件。

我们想使用,就要先加入依赖pom:

<dependencies>
    <!-- 阿里云oss依赖 -->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
    </dependency>

    <!-- 日期工具栏依赖 -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
    </dependency>
</dependencies>

然后去它的官网查看api,看看是如何使用的:

上传文件流

以下代码用于上传文件流:

我们可以看出,我们总共需要四个值,分别是:

endpoint:域名

accessKeyId:你的账号

accessKeySecret: 你的密码

Bucketname: 分组名字

这四个数值由于不是固定的,所以我们可以将这些值写道yml配置文件中,防止硬编码,后期更好的维护。

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 上传文件流。
InputStream inputStream = new FileInputStream("<yourlocalFile>");
ossClient.putObject("<yourBucketName>", "<yourObjectName>", inputStream);
里边三个参数的含义: 你的组名,你上传到oss后的文件名,文件流


// 关闭OSSClient。
ossClient.shutdown();

将需要的值配置到yml文件中:

注意这个aliyun  oss  file  一系列的结构是我们自己定义的,需要用@Value注解注入到oss上传文件类中。

# 密钥  id bucket
server:
  port: 7003

spring:
  application:
    name: oss-service

#阿里云oss
aliyun:
  oss:
    file:
      endpoint: oss-cn-beijing.aliyuncs.com
      keyid:  LTAI4GAfX5FQh1euXmfdyMv
      keysecret:  hbRPRzAb7JLGkF9UpavjJMQyQGqIUE
      bucketname: jkt-oss

主类:

其实最主要的操作也就四个:
1、创建oss对象

2、获取文件流

3、给上传后的文件赋予名字---防止文件名字相同

4、调用oss对象的putObject方法,进行上传


@Service
public class OssServiceImpl implements OssService {
    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;
    @Value("${aliyun.oss.file.keyid}")
    private String accessKeyId;
    @Value("${aliyun.oss.file.keysecret}")
    private String accessKeySecret;
    @Value("${aliyun.oss.file.bucketname}")
    private String bucketname;


    // 图片上
    public String uploadImage(MultipartFile file) {

        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            InputStream inputStream = file.getInputStream();
            String filePath = new DateTime().toString("yyyy/MM/dd");

            // 文件名  uuid.扩展名
            String original = file.getOriginalFilename();  // 获取上传的文件名   // a.jpg
            String fileName = UUID.randomUUID().toString();  // 生成一串随机数
            String fileType = original.substring(original.lastIndexOf(".")); // 截取字符串 截取到jpg
            String newName = fileName + fileType;
            String fileUrl = filePath + "/" + newName;

            // 上传文件。
            ossClient.putObject(bucketname, fileUrl, inputStream);
            // 关闭OSSClient。
            ossClient.shutdown();
            return "http://" + bucketname + "." + endpoint + "/" + fileUrl;

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }


}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是将Spring Boot与阿里云OSS整合的步骤: 1. 在阿里云OSS上创建一个Bucket,并获取Access Key ID和Access Key Secret 2. 在pom.xml中添加依赖: ``` <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.0</version> </dependency> ``` 3. 创建一个OSS配置类,用于连接阿里云OSS: ```java @Configuration public class OSSConfig { private String endpoint = "oss-cn-hangzhou.aliyuncs.com"; private String accessKeyId = "your_access_key_id"; private String accessKeySecret = "your_access_key_secret"; @Bean public OSSClient ossClient() { return new OSSClient(endpoint, accessKeyId, accessKeySecret); } } ``` 4. 创建一个OSS服务类,用于上传文件到阿里云OSS: ```java @Service public class OSSService { @Autowired private OSSClient ossClient; public String upload(String bucketName, String key, InputStream inputStream) { PutObjectResult result = ossClient.putObject(bucketName, key, inputStream); return result.getETag(); } } ``` 5. 在Controller中调用OSS服务类上传文件: ```java @RestController public class OSSController { @Autowired private OSSService ossService; @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { InputStream inputStream = file.getInputStream(); String bucketName = "your_bucket_name"; String key = file.getOriginalFilename(); return ossService.upload(bucketName, key, inputStream); } } ``` 通过以上步骤,就可以在Spring Boot中实现与阿里云OSS整合了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值