前言
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。
一、什么是对象存储
对象象存储OSS(Object Storage Service)是提供的海量、安全、低成本、高持久的云存储服务。
OSS特点
- 持久性
- 安全
- 成本低
- 智能存储
- 方便、快捷
- 强大、灵活
- 数据冗余机制
- 丰富、强大的处理功能
二、应用场景
1、图片和音视频等应用的海量存储
OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。OSS支持流式写入和文件写入两种方式。
2、网页或者移动应用的静态和动态资源分离
利用海量互联网带宽,OSS可以实现海量数据的互联网并发下载。OSS提供原生的传输加速功能,支持上传加速、下载加速,提升跨国、跨洋数据上传、下载的体验。同时,OSS也可以结合CDN产品,提供静态内容存储、分发到边缘节点的解决方案,利用CDN边缘节点缓存的数据,提升同一个文件被同一地区客户大量重复并发下载的体验。
3、云端数据处理
上传文件到OSS后,可以配合媒体处理服务和图片处理服务进行云端的数据处理。
三、快速使用
1、方式一:在Maven项目中加入依赖项(推荐方式)
在Maven工程中使用OSS Java SDK,只需在pom.xml中加入相应依赖即可。以3.10.2版本为例,在<dependencies>中加入如下内容:
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
复制代码
如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖。添加jaxb相关依赖示例代码如下:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
复制代码
2、方式二:在Eclipse项目中导入JAR包
以3.10.2版本为例,步骤如下:
- 下载Java SDK 开发包。
- 解压该开发包。
- 将解压后文件夹中的文件aliyun-sdk-oss-3.10.2.jar以及lib文件夹下的所有文件拷贝到您的项目中。
- 在Eclipse中选择您的工程,右键选择Properties > Java Build Path > Add JARs。
- 选中拷贝的所有JAR文件,导入到Libraries中。
3、方式三:在Intellij IDEA项目中导入JAR包
以3.10.2版本为例,步骤如下:
- 下载Java SDK 开发包。
- 解压该开发包。
- 将解压后文件夹中的文件aliyun-sdk-oss-3.10.2.jar以及lib文件夹下的所有JAR文件拷贝到您的项目中。
- 在Intellij IDEA中选择您的工程,右键选择File > Project Structure > Modules > Dependencies > + > JARs or directories 。
- 选中拷贝的所有JAR文件,导入到External Libraries中。
四、使用示例
1、上传文件
public static void uploadFile(File file, String goodsImgPath) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
ossClient.putObject(bucketName, goodsImgPath, file);
ossClient.setObjectAcl(bucketName, goodsImgPath, CannedAccessControlList.PublicRead);
// 关闭OSSClient。
ossClient.shutdown();
}
复制代码
2、上传文件流
public static void uploadFileInputStream(InputStream inputStream , String goodsImgPath) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
ossClient.putObject(bucketName, goodsImgPath, inputStream);
ossClient.setObjectAcl(bucketName, goodsImgPath, CannedAccessControlList.PublicRead);
// 关闭OSSClient。
ossClient.shutdown();
}
复制代码
3、下载文件
public static void downloadFileInputStream(InputStream inputStream , String goodsImgPath) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
// 读取文件内容。
System.out.println("Object content:");
BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
while (true) {
String line = reader.readLine();
if (line == null) break;
System.out.println("\n" + line);
}
// 关闭流。
reader.close();
// 关闭OSSClient。
ossClient.shutdown();
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END