阿里云 对象存储OSS

这篇博客介绍了如何使用Java与阿里云OSS对象存储进行交互,包括创建Bucket、配置AccessKey、设置aliyun.properties文件、创建AliyunConfig bean、实现UploadService数据存储以及在controller层的测试。提供详细步骤,并建议参考阿里云官方文档进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阿里云OSS介绍

阿里云官网地址
在这里插入图片描述
进入管理控制台
创建Bucket
在这里插入图片描述
进入AccessKey,创建AccessKey

在这里插入图片描述
也可以参考文档
阿里云参考文档

导入依赖

    <!--springboot工程需要继承的父工程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
    </parent>
    <dependencies>
        <!--web开发的起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--            数据类型处理包-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.7</version>
        </dependency>

        <!--            日期处理包-->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

aliyun.properties配置文件

在这里插入图片描述
endpoint
在这里插入图片描述
accessKeyId,accessKeySecret
在这里插入图片描述
bucketName
在这里插入图片描述
urlPrefix
在这里插入图片描述

AliyunConfig.class创建bean

@Configuration
@PropertySource("classpath:aliyun.properties")
@Data
public class AliyunConfig {

    @Value("${endpoint}")
    private String endpoint;
    @Value("${accessKeyId}")
    private String accessKeyId;
    @Value("${accessKeySecret}")
    private String accessKeySecret;
    @Value("${bucketName}")
    private String bucketName;
    @Value("${urlPrefix}")
    private String urlPrefix;

    @Bean
    public OSS oss(){
//        return new OSSClient(endpoint,accessKeyId,accessKeySecret); //被抛弃的,仍可以使用
        return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }
}

UploadService.class 数据存储

@Service
public class UploadService {
//    @Autowired
//    private OSSClient ossClient;

    @Autowired
    private OSS oss;

    @Autowired
    private AliyunConfig aliyunConfig;

    public String upload(MultipartFile file) throws IOException {
        //文件路径
        String path=getFilepath(file.getOriginalFilename());

        PutObjectResult putObjectResult = oss.putObject(aliyunConfig.getBucketName(), path, new ByteArrayInputStream(file.getBytes()));

        System.out.println(putObjectResult);

        return aliyunConfig.getUrlPrefix()+path;
    }

    private String getFilepath(String sourceFileName){
        DateTime dateTime = new DateTime();
        return "images/"+dateTime.toString("yyyy")+"/"+
                dateTime.toString("MM")+"/"+dateTime.toString("dd")+"/"+
                System.currentTimeMillis()+ RandomUtils.nextInt(100,9999)+"."+
                StringUtils.substringAfter(sourceFileName,".");
    }

}

AliTest controller层

@RestController
@ResponseBody
public class AliTest {
    @Autowired
    private UploadService uploadService;

    @GetMapping("/upload")
    public String upload(MultipartFile file) throws IOException {
        String upload = uploadService.upload(file);
        return upload;
    }

}

测试

采用postman进行测试
在这里插入图片描述
在这里插入图片描述
访问地址是aliyun.properties中的urlPrefix加上文件路径

### 阿里云 OSS 对象存储使用指南 #### 选择合适的存储类型 阿里云对象存储 OSS 提供了多种存储类型,用户可以根据实际需求选择最合适的选项来优化成本和性能。这些存储类型包括标准型、低频访问型以及归档型等,每种类型都针对不同的数据访问模式进行了优化[^3]。 #### 创建Bucket并配置权限 为了开始使用OSS服务,需先登录到阿里云控制台创建一个新的bucket容器用于存放文件。在创建过程中可以设置该bucket的地域位置及其公共读写权限级别;之后还可以进一步细化ACL(Access Control List),以更精确地管理谁能够查看或修改其中的内容[^1]。 #### 文件上传与下载操作 完成上述准备工作后就可以利用Web界面直接拖拽方式轻松实现本地计算机上的文件向云端迁移;同时也支持API接口调用来满足程序自动化的需求,在Python环境中可借助`oss2`库来进行交互: ```python import oss2 auth = oss2.Auth('your-access-key-id', 'your-access-key-secret') bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'example-bucket') with open('/local/path/to/file.txt', 'rb') as fileobj: bucket.put_object('remote-file-name.txt', fileobj) # 下载文件 bucket.get_object_to_file('remote-file-name.txt', '/local/path/to/downloaded-file.txt') ``` 此段代码展示了如何通过编程手段将指定路径下的文本文件上载至名为`example-bucket`的目标桶内,并可以从远程获取已存在的资源保存于本机目录下[^4]。 #### 图片处理功能应用 除了基本的数据存取外,OSS还集成了丰富的多媒体处理特性之一就是对于图像素材的支持——允许开发者自定义样式参数对原始图进行裁剪缩放等一系列变换后再对外分享链接给其他用户浏览查阅[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值