springcloud整合oss问题整理(谷粒商城项目)

  • Post author:
  • Post category:其他


使用springcloud整合oss依赖包的时候出现问题,尝试了很多方法解决,鼓捣了整整半天才知道原因,所以在这里记录一下。

先说下我的环境:

springboot:2.3.3.RELEASE
springcloud :Hoxton.SR8
springcloud-alibaba:2.2.1.RELEASE



正确做法

  1. 导入依赖包

    一定要写上版本,因为oss没有2.2.1.版本的了,只能写之前的,也可能换方式了,这个后面可以再研究。
	<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
            <version>2.2.0.RELEASE</version>
        </dependency>
  1. 编写配置
spring:
  cloud:
    alicloud:
      access-key: LTAI4G7UQXYjtGm4GKXT2***
      secret-key: QW2nQKI2O4uWFehe6SpCaiTsrgb***
      oss:
        endpoint: oss-cn-qingdao.aliyuncs.com
  1. 编写测试

    ossclient报红不用管,经尝试改代码可以运行成功,且没有输出错误
@SpringBootTest
class ShopProductApplicationTests {

    @Autowired
    private OSSClient ossClient;

    @Test
    public void saveFile() throws FileNotFoundException {
        // 下载
       // ossClient.getObject(new GetObjectRequest("存储桶名", "需下载的文件名"), new File("本地地址"));
       
		//上传
        // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
        InputStream inputStream = new FileInputStream("本地要存的地址");
        // 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
        ossClient.putObject("存储桶名", "服务器文件名", inputStream);

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

这样下来运行是没有问题的,但是我最初也是这么写的,遇到问题了

问题1. 提示bean中找不到ossclientclass

原因有两个:

1. 导入的spring-cloud-starter-alicloud-oss没有写上版本,或者导入了官网上写得(亲测,官网写得不可用,找不到这个包)

2. 在启动或者测试的项目中加入了,删除这个依赖

		 <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>2.8.3</version>
            <scope>test</scope>
       	 </dependency>
   	 例如,我在common的包中加入了springcloud-oss的依赖,然后在product子服务中编写测试案例,但是提示找不到class,因为我在product中引入了上面的依赖,删了就可以了

问题2. 提示endpoint为空

我在common中引入了springcloud-oss依赖,启动网关服务的时候,启动不起来,报错endpoint为空,那么需要在网关子服务的配置文件中配置上存储桶的信息,否则启动不了项目,虽然我并没有在这个服务中用到,但是被加载进来了,而且没有配。如果实在不想加,可以在网关服务的启动类上@SpringBootApplication(exclude = {***Configuration.class})出去。

问题3. 下载文件的时候,如果服务器上文件不存在也会报错,去服务器看下是不是文件不存在即可



版权声明:本文为qq_41460077原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。