对象存储OSS
海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。
第一步: 导入依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
第二步: 编写代码
public class HelloOSS {
// endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
// 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
// endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
// 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
// private static String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
private static final String endpoint = "http://oss-cn-beijing.aliyuncs.com";
// accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
// 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
// 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
private static final String accessKeyId = "你自己的accessKeyId";
private static final String accessKeySecret = "你自己的accessKeySecret";
// Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
// Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
private static final String bucketName = "你自己的bucketName";
// Object是OSS存储数据的基本单元,称为OSS的对象,也被称为OSS的文件。详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
// Object命名规范如下:使用UTF-8编码,长度必须在1-1023字节之间,不能以“/”或者“\”字符开头。
private static final String firstKey = "firstKey ";
public static void main(String[] args) {
// 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
if (ossClient.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
ossClient.createBucket(bucketName);
}
// 上传图片 部分
// 使用 ObjectMetadata 对象设置ContentType
ObjectMetadata omd = new ObjectMetadata();
omd.setContentType("image/png");
// 获取文件输出流
FileInputStream inputStream = new FileInputStream("E:\\Desktop\\1.png");
// 将文件写入bucket中
ossClient.putObject(bucketName, firstKey, inputStream, omd);
// 关闭输入流
inputStream.close();
// 获取图片的链接
GeneratePresignedUrlRequest urlRequest =
new GeneratePresignedUrlRequest(bucketName, firstKey, HttpMethod.GET);
// 设置链接过期时间
Date date = new Date(System.currentTimeMillis() + (long) (Math.pow(10, 10)));
urlRequest.setExpiration(date);
// 获取图片链接
URL url = ossClient.generatePresignedUrl(urlRequest);
System.out.println(url);
} catch (OSSException oe) {
oe.printStackTrace();
} catch (ClientException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
}
}
}
运行结果:
您已经创建Bucket:testbucketwdh。
http://testbucketwdh.oss-cn-beijing.aliyuncs.com/picture_1?Expires=1619918548&OSSAccessKeyId=LTAI4G9U7SDQo3d9sevzhm8h&Signature=eejODWZPHL8xDRoJ0k%2BpxFp1eBc%3D
在html界面中, 可以将上面返回的链接放入img标签的src属性中, 即可在网页中显示图片.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<img src="https://testbucketwdh.oss-cn-beijing.aliyuncs.com/picture_1?Expires=1609917896&OSSAccessKeyId=TMP.3KjiraecJzLn7XbFZ9wQ2Nhvz7JCQa8zBgwfRDTKfeUcorSGT3rt7YpoghboaSS4LRp2YqF6jubLs8oa625S7Jk6rRs5H2&Signature=Nm5YIQtyRdpl3zGV6snJz%2BeAkzs%3D" alt="">
</body>
</html>
效果如下图所示
阿里提供的demo, 点我下载