Alibaba Cloud OSS 阿里云对象存储 新版

官方地址:对象存储 OSS_云存储服务
示例代码地址:GitHub aliyun-oss-spring-boot-sample

上传策略:服务端签名后直传
通过服务器处理签名,但不处理文件,保证加密的同时,减轻服务的压力
在这里插入图片描述

开通

登录阿里云账号
选择oss服务进行开通
在这里插入图片描述

进入OSS管理控制台,创建一个bucket
在这里插入图片描述

鼠标悬浮右上角头像,点击AccessKey管理
在这里插入图片描述

在这里插入图片描述

选择使用子用户AccessKey
在这里插入图片描述

创建一个用户,并分配oss的读写权限
在这里插入图片描述

得到AccessKey IDAccessKey Secret
在这里插入图片描述

得到Endpoint(即外网访问地址)

搭建子项目

gulimall-third-party

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
    <modelVersion>4.0.0</modelVersion>  
    <parent>
	    <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-parent</artifactId>  
        <version>2.6.11</version>  
        <relativePath/> <!-- lookup parent from repository -->  
    </parent>  
    <groupId>com.atguigu.gulimall</groupId>  
    <artifactId>gulimall-third-party</artifactId>  
    <version>0.0.1-SNAPSHOT</version>  
    <name>gulimall-third-party</name>  
    <description>gulimall-third-party</description>  
    <properties>
		<java.version>1.8</java.version>  
        <spring-cloud.version>2021.0.4</spring-cloud.version>  
    </properties>  
    <dependencies>
		<dependency>  
            <groupId>com.atguigu.gulimall</groupId>  
            <artifactId>gulimall-common</artifactId>  
            <version>0.0.1-SNAPSHOT</version>  
            <exclusions>
	            <exclusion>  
                    <groupId>com.baomidou</groupId>  
                    <artifactId>mybatis-plus-boot-starter</artifactId>  
                </exclusion>  
            </exclusions>  
        </dependency>  
        <dependency>
	        <groupId>com.alibaba.cloud</groupId>  
            <artifactId>aliyun-oss-spring-boot-starter</artifactId>  
            <version>1.0.0</version>  
        </dependency>  
        <!--导入高版本的sdk-oss-->  
        <dependency>  
            <groupId>com.aliyun</groupId>  
            <artifactId>aliyun-java-sdk-core</artifactId>  
            <version>4.4.5</version>  
        </dependency>  
        <!--openfeign-->  
        <dependency>  
            <groupId>org.springframework.cloud</groupId>  
            <artifactId>spring-cloud-starter-openfeign</artifactId>  
        </dependency>  
        <!--web-->  
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-web</artifactId>  
        </dependency>  
        <dependency>
			<groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-actuator</artifactId>  
        </dependency>  
        <dependency>
	        <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-test</artifactId>  
            <scope>test</scope>  
        </dependency>  
        <dependency>
			<groupId>org.junit.jupiter</groupId>  
            <artifactId>junit-jupiter</artifactId>  
            <scope>test</scope>  
        </dependency>  
    </dependencies>  
  
    <dependencyManagement>
		<dependencies>  
            <dependency>  
                <groupId>org.springframework.cloud</groupId>  
                <artifactId>spring-cloud-dependencies</artifactId>  
                <version>${spring-cloud.version}</version>  
                <type>pom</type>  
                <scope>import</scope>  
            </dependency>  
        </dependencies>  
    </dependencyManagement>  
</project>

yml

spring:  
  application:  
    name: gulimall-third-party  
  cloud:  
    nacos:  
      server-addr: 127.0.0.1:8848  
      config:  
        namespace: 24e69e01-f921-48bd-9888-41eceff74341  
        group: DEFAULT_GROUP  
  config:  
    import:  
      - optional:nacos:oss.yml?refresh=true  
  
server:  
  port: 30000

#以下是配置在nacos中的oss.yml
alibaba:  
  cloud:  
    access-key: 你的access-key
    secret-key: 你的secret-key 
    oss:  
      endpoint: oss-cn-beijing.aliyuncs.com #外网访问地址

GulimallThirdPartyApplication.java

@SpringBootApplication  
@EnableDiscoveryClient  
public class GulimallThirdPartyApplication {  
  
    public static void main(String[] args) {  
        SpringApplication.run(GulimallThirdPartyApplication.class, args);  
    }  
}

测试类:

@SpringBootTest(classes = GulimallThirdPartyApplication.class)  
class GulimallThirdPartyApplicationTest {  
  
    @Autowired  
    OSSClient ossClient;  
  
    @Test  
    public void testUpload() throws FileNotFoundException {  
  
        //上传文件流。  
        InputStream inputStream = new FileInputStream("C:\\Users\\admin\\Pictures\\1.jpg");  
        ossClient.putObject("bucketName", "Naruto.jpg", inputStream);  
  
        // 关闭OSSClient。  
        ossClient.shutdown();  
        System.out.println("上传成功.");  
    }  
  
}

结果:
在这里插入图片描述

前端请求跨域配置:
在这里插入图片描述

注意

  1. 注意使用新的starter,aliyun-oss-spring-boot-starter
  2. aliyun-oss-spring-boot-starter的sdk-oss版本(3.1.0)过低,当前springboot 版本较高(2.6.11)所以添加了更高版本的sdk-oss
Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    com.alibaba.cloud.context.AliCloudSdk.<init>(AliCloudSdk.java:76)

The following method did not exist:

    com.aliyuncs.profile.DefaultProfile.getHttpClientConfig()Lcom/aliyuncs/http/HttpClientConfig;

The method's class, com.aliyuncs.profile.DefaultProfile, is available from the following locations:

    jar:file:/D:/Tools/maven/com/aliyun/aliyun-java-sdk-core/3.4.0/aliyun-java-sdk-core-3.4.0.jar!/com/aliyuncs/profile/DefaultProfile.class

The class hierarchy was loaded from the following locations:

    com.aliyuncs.profile.DefaultProfile: file:/D:/Tools/maven/com/aliyun/aliyun-java-sdk-core/3.4.0/aliyun-java-sdk-core-3.4.0.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of com.aliyuncs.profile.DefaultProfile
  1. 视频的oss.yml配置已经不再适用,请参考阿里的示例代码配置
  2. 配置跨域后生效需要一点时间
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值