分布式集群上传文件到阿里云存储-OSS

前两天一个小伙伴问到分布式集群中,比如订单服务搞成集群,我每次都被负载均衡到不同的服务器,那么我上传的文件怎么搞?怎么统一管理的,我这里就教给大家一种简单的方法,统一存储在阿里云服务器的对象存储OSS中。

oss是什么我就不讲了,百度一搜一大堆。

今天分两步讲下:

第一步讲下OSS云存储开通与使用。

首先登陆阿里云,首页里面选择 存储与网络里面的对象存储OSS.

分布式集群上传文件到阿里云存储-OSS_第1张图片

然后点击 立即开通。

分布式集群上传文件到阿里云存储-OSS_第2张图片

下一步

分布式集群上传文件到阿里云存储-OSS_第3张图片

右上角头像点击、实名认证

分布式集群上传文件到阿里云存储-OSS_第4张图片

个人实名认证

分布式集群上传文件到阿里云存储-OSS_第5张图片

分布式集群上传文件到阿里云存储-OSS_第6张图片

分布式集群上传文件到阿里云存储-OSS_第7张图片

支付宝 扫码登录。

分布式集群上传文件到阿里云存储-OSS_第8张图片

随便填写地址:

分布式集群上传文件到阿里云存储-OSS_第9张图片

分布式集群上传文件到阿里云存储-OSS_第10张图片

到此 实名认证完成,然后回去继续开通OSS。

分布式集群上传文件到阿里云存储-OSS_第11张图片

分布式集群上传文件到阿里云存储-OSS_第12张图片

分布式集群上传文件到阿里云存储-OSS_第13张图片

开通完成,接下来说下怎么使用。

首先 点击左上角的菜单,然后点击对象存储OSS

分布式集群上传文件到阿里云存储-OSS_第14张图片

分布式集群上传文件到阿里云存储-OSS_第15张图片

这是一些专业术语

 

分布式集群上传文件到阿里云存储-OSS_第16张图片

解释一下:

Bucket就是指我们的文件上传到哪里,哪个桶,一般是一个项目一个桶,一会我们需要创建。

Object:就是我们要上传的文件
地域:我们创建桶需要选择的地址,区域。

Endpoint:我们的桶里面的文件最终是通过这个endpoint访问的。

AccessKey:这个很重要,我们要上传东西到我们的桶里面,需要账号密码,就是这个东东。

好了,那我们就创建一个桶:

分布式集群上传文件到阿里云存储-OSS_第17张图片

填写信息:

分布式集群上传文件到阿里云存储-OSS_第18张图片

创建成功之后,我们看看我们的桶:

分布式集群上传文件到阿里云存储-OSS_第19张图片

我们现在可以上传一个文件到我们的桶里面:

分布式集群上传文件到阿里云存储-OSS_第20张图片

分布式集群上传文件到阿里云存储-OSS_第21张图片

分布式集群上传文件到阿里云存储-OSS_第22张图片

点击详情,复制链接,就可以访问了。

分布式集群上传文件到阿里云存储-OSS_第23张图片

浏览器访问我们复制的地址:

分布式集群上传文件到阿里云存储-OSS_第24张图片

分布式集群上传文件到阿里云存储-OSS_第25张图片

下载下来了,ok。

到此为止,我们的oss就准备就绪了,那我们怎么用java操作,往我们的桶里面上传文件呢?下面就来看第二部分。

第二步 Java操作OSS上传文件

sdk文档在阿里云里面就有,我就摘出来借花献佛。

在 Maven 工程中使用 OSS Java SDK,只需在 pom.xml 中加入相应依赖即可。以 3.8.0 版本为例,在 内加入如下内容: 


    com.aliyun.oss
    aliyun-sdk-oss
    3.8.0

可以上传字符串 上传Byte数组 上传网络流 上传文件流 

我就拿上传文件流写个demo。

import java.io.FileInputStream;
import java.io.InputStream;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;

public class OOSDemo {
	public static void main(String[] args) throws Exception{
		// Endpoint以成都为例,我选的成都,其它Region请按实际情况填写。
		String endpoint = "oss-cn-chengdu.aliyuncs.com";
		// 下面这两个非常重要,一会来解释一下怎么来的。
		String accessKeyId = "**************";
		String accessKeySecret = "***************";
		// 创建OSSClient实例。
		OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
		// 上传文件流。
		InputStream inputStream = new FileInputStream("D:\\test01.jpg");
		/**
		 * 第一个参数是 你的桶的名称
		 * 第二个参数是 你上传文件的名称
		 */
		ossClient.putObject("herman-hello", "test01", inputStream);

		// 关闭OSSClient。
		ossClient.shutdown();
		System.out.println("上传成功");
	}
}

这里讲下accessKeyId和 accessKeySecret 怎么来的。

阿里云不可能让你使用 支付宝账户来写在代码里面,太不安全,所以就搞了个子账户,如下操作获取此处两个东西。

分布式集群上传文件到阿里云存储-OSS_第26张图片

分布式集群上传文件到阿里云存储-OSS_第27张图片

分布式集群上传文件到阿里云存储-OSS_第28张图片

分布式集群上传文件到阿里云存储-OSS_第29张图片

下面就创建成功了,生成了我打马赛克这里的两个东东,就是你需要放在代码里的东东。

分布式集群上传文件到阿里云存储-OSS_第30张图片

需要先添加权限:

分布式集群上传文件到阿里云存储-OSS_第31张图片

我选择这个Full权限就够了

分布式集群上传文件到阿里云存储-OSS_第32张图片

最终,上传成功,如图:

分布式集群上传文件到阿里云存储-OSS_第33张图片

 

这么写 是不是感觉有点复杂,其实 spring cloud alibaba里面有现成的starter,我们从github撸下来看看:

1.直接加入pom


			com.alibaba.cloud
			spring-cloud-starter-alicloud-oss
			2.2.0.RELEASE
		

2. application.properties加入如下配置:

spring.cloud.alicloud.access-key=**********  这里就是你代码里面的key
spring.cloud.alicloud.secret-key=***************  这里就是你代码里面的key
spring.cloud.alicloud.endpoint=oss-cn-chengdu.aliyuncs.com

3.直接@Autowired注入 OSSClient使用即可。我这里是main方法,需要静态注入OSSClient  ossClient。

public static void main(String[] args) throws Exception{
		
		// 上传文件流。
		InputStream inputStream = new FileInputStream("D:\\test02.jpg");
		/**
		 * 第一个参数是 你的桶的名称
		 * 第二个参数是 你上传文件的名称
		 */
		ossClient.putObject("herman-hello", "test02", inputStream);

		// 关闭OSSClient。
		ossClient.shutdown();
		System.out.println("上传成功");
	}

ok,暂 至此。其实这样 前端请求还是访问了我们的服务器,之后才调用阿里云。还是给我们的服务增加了压力,后面还会抽时间写一篇直接不经过我们的服务器,通过服务器返回的认证直接访问阿里云的文章。

你可能感兴趣的:(分布式集群上传文件到阿里云存储-OSS)