- 在使用之前先了解上传文件/图片的过程,首先我觉得使用阿里云对象存储功能可以分为三种方式上传到阿里云OSS中;
1)、第一种方案就是:浏览器把文件传到自己的程序中,通过Java代码去给阿里云OSS服务器上传文件;考虑到这样操作的话会影响到其他功能的卡顿,因为IO是很占用带宽的,所以第一种方案暂不采用;
2)、第二种方案就是浏览器直接将文件传给阿里云的OSS中,但是这样做的话是有风险的,容易把阿里云OSS的账号密码泄露掉,毕竟账号密码要写到浏览器上,所以这种方案也不采用!
3)、最后一种方案就是:阿里云OSS的账号密码还是写到后端,浏览器先去自己的程序中拿到后台编写好的防伪码(泛指一个假数据),拿到之后再次通过浏览器去上传到阿里云OSS中,阿里云OSS成功对比这个防伪码成功即可成功上传文件/图片。 - 接下来开始在程序中安装(第2,3,4,5,6是上面所说的第一种方案)
导入oss的相关依赖
<dependency> <groupId>com.aliyun.ossgroupId> <artifactId>aliyun-sdk-ossartifactId> <version>3.10.2version>dependency>
3.示例代码
// Endpoint以杭州为例,其它Region请按实际情况填写。String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。String accessKeyId = "";String accessKeySecret = "";// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 上传文件流。InputStream inputStream = new FileInputStream("");ossClient.putObject("", "", inputStream);// 关闭OSSClient。ossClient.shutdown();
4.也可以导入
<dependency> <groupId>com.alibaba.cloudgroupId> <artifactId>spring-cloud-starter-alicloud-ossartifactId> <version>2.2.0.RELEASEversion>dependency>
5.yml配置oss并且注入
spring: cloud: #阿里云OSS云存储 alicloud: access-key: secret-key: oss: endpoint: http://oss-cn-hangzhou.aliyuncs.com
@AutowiredOSSClient ossClient;
6.接下来测试
InputStream inputStream = new FileInputStream("");ossClient.putObject("", "", inputStream);// 关闭OSSClient。ossClient.shutdown();
8.接下来考虑到后期需要调用多个第三方接口,在这SpringCloud中在加入一个模块“dadamall-third-party”首先在pom.xml引入公共模块的jar,然后加入SpringCloudAlibaba的一系列jar
<dependencies> <dependency> <groupId>com.atdada.dadamallgroupId> <artifactId>dadamall-commonsartifactId> <version>0.0.1-SNAPSHOTversion> dependency> <dependency> <groupId>com.alibaba.cloudgroupId> <artifactId>spring-cloud-starter-alicloud-ossartifactId> <version>2.2.0.RELEASEversion> dependency> dependencies><dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloudgroupId> <artifactId>spring-cloud-alibaba-dependenciesartifactId> <version>2.2.3.RELEASEversion> <type>pomtype> <scope>importscope> dependency> dependencies> dependencyManagement>
接下来就给这个新的模块配置nacos中,怎么配置呢,首先创建bootstrap.properties这个文件,在nacos的命名空间中添加一个关于这个模块的名字,然后去配置列表找到这个名字,拿到namespace,它是一串类似ID的东西。
spring.application.name=dadamall-third-partyspring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.cloud.nacos.config.namespace=******************************
然后点新建配置
配置成功之后在bootstrap.properties文件中开始引用
spring.cloud.nacos.config.ext-config[0].data-id=oss.ymlspring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUPspring.cloud.nacos.config.ext-config[0].refresh=true
然后配置上这个模块的注册服务到nacos中,新建一个application.yml
spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 application: name: dadamall-third-party
考虑到在pom.xml文件中引入了公共的模块,然而公共的模块中有myabatisplus的jsr,暂时我们先不用,这时候就可以先排除掉
<dependency> <groupId>com.atdada.dadamallgroupId> <artifactId>dadamall-commonsartifactId> <version>0.0.1-SNAPSHOTversion> <exclusions> <exclusion> <groupId>com.baomidougroupId> <artifactId>mybatis-plus-boot-starterartifactId> exclusion> exclusions> dependency>
切记切记!!你以为就这样就能正确配置和注册到nacos了吗?脑子呢???!!!一定要在模块的启动类上加@EDC这个注解啊(开启服务的注册和发现)!说了多少遍了,,,不能忘记~~~