1. 简介
(略---)
2. 开通OSS服务
进入官网:https://ecs.console.aliyun.com/
进入到控制台
3. OSS使用
1)创建bucket
创建成功:
2)在bucket中创建目录
可以在这上传文件:
(首次操作可能需要验证手机)
4. Java 程序调用OSS服务接口
1)参考文档地址
官方介绍
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以通过调用 API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过 Web 控制台对数据进行简单的管理。OSS 适合存放任意类型的文件,适合各种网站、开发企业及开发者使用。按实际容量付费真正使您专注于核心业务。
2)创建AccessKey
阿里云账号、密码→登录后在网页上操作
AccessKey→Java 程序登录OSS进行操作
访问密钥AccessKey(AK)相当于登录密码,只是使用场景不同。AccessKey用于程序方式调用云服务API,而登录密码用于登录控制台。如果您不需要调用API,那么就不需要创建AccessKey。
您可以使用AccessKey构造一个API请求(或者使用云服务SDK)来操作资源。AccessKey包括AccessKeyId和AccessKeySecret。
- AccessKeyId用于标识用户。
- AccessKeySecret是用来验证用户的密钥。AccessKeySecret必须保密。
警告 禁止使用主账号AK,因为主账号AK泄露会威胁您所有资源的安全。请使用子账号(RAM用户)AK进行操作,可有效降低AK泄露的风险。
1.使用主账号登录RAM管理控制台。
2.如果未创建RAM用户,在左侧导航栏,单击用户管理,然后单击新建用户,创建RAM用户。如果已创建RAM用户,跳过此步骤。
3.在左侧导航栏,单击用户管理,然后单击需要创建AccessKey的用户名,进入用户详情页面。
4.在用户AccessKey区域,单击创建AccessKey。
5.完成手机验证后,在新建用户AccessKey页面,展开AccessKey详情,查看AcessKeyId和AccessKeySecret。然后单击保存AK信息,下载AccessKey信息。
注意 AccessKey创建后,无法再通过控制台查看。请您妥善保存AccessKey,谨防泄露。
6.单击该RAM用户对应的授权,给RAM用户授予相关权限,例如AliyunOSSFullAccess将给RAM用户授予OSS的管理权限。
③操作步骤
这里会收到验证码..填上就行
会出现以下界面:
及时保存!!!只能看到这一次
3)SDK参考
JDK:Java Development Kit
SDK:Software Development Kit
<!-- SDK依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.8.3</version>
</dependency>
过程图:
参考文档:https://help.aliyun.com/document_detail/31848.html?spm=a2c4g.11174283.6.605.6bac7da2jOBrQC
官网的示例代码:
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = new FileInputStream("<yourlocalFile>");
ossClient.putObject("<yourBucketName>", "<yourObjectName>", inputStream);
// 关闭OSSClient。
ossClient.shutdown();
下面为我写的上传文件的代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import com.aliyun.oss.OSSClient;
public class OOSTest {
public static void main(String[] args) throws FileNotFoundException {
// Endpoint我这里是深圳
String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
// 这里是刚刚叫保存的 accessKeyId和accessKeySecret
String accessKeyId = "LTAI4FboSRAQu3z";
String accessKeySecret = "adZ3yWrjRLCUrNsZhdxEv";
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 声明要上传的目录和文件名
String fileName = "hjy.jpg";
// 声明上传文件后存入的目录的名称
String folderName = "test";
// 刚刚声明桶的名称
String bucketName = "jyyzbucket";
// 存入对象的名称=目录名称+"/"+文件名
String objectName = folderName + "/" + fileName;
// 上传文件流。
InputStream inputStream = new FileInputStream(fileName);
ossClient.putObject(bucketName, objectName, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
}
}
哦出错了:
[ResponseError]:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>You have no right to access this object because of bucket acl.</Message>
<RequestId>5E80CD31D21B413231ADDC6E</RequestId>
<HostId>jyyzbucket.oss-cn-shenzhen.aliyuncs.com</HostId>
</Error>
哦,忘记开权限了:
这样就上传上来了: