文章目录目录
1、打开阿里云官网并登录
2、开通OSS对象存储服务
3、在java中使用这个OSS对象存储服务
3.1、获取AccessKey
3.3、在Java中使用oss
打开阿里云官网,点击右上角的登录,进行登陆账号
我们在这里选择控制台
点击左上角的三条线
可以看到这里阿里云提供了特别多的服务,我们在这里搜索oss,即可看到oss对象存储服务,我们打开它
我们点击开通
我们就会来到这个页面,想要存储数据我们得用到Bucket列表并进行创建Bucket
打开以下页面后,我们只需要选择这两个即可,有其他需求的看你们自己
然后我们选择确定,这样就创建了一个Bucket了
然后我们点击bucket列表看到自己新建的bucket,我们进行打开
就可以在这里做上传文件或是其他的操作了
想要在自己的项目中使用阿里云的oss对象存储服务,我们需要三个东西,一个是bucket、AccessKey(id, 密钥)、endpoint
bucket有了、endpoint也有了、就差一个AccessKey了,这个是你使用阿里云服务的权证
我们点击右上角头像,选择AccessKey管理
我们来到这个页面点击创建
然后我们可以看到下面这个,我们得到了ID 和Secret就可以了,我们可以选择下载csv文件进行key的保存,然后点击确定即可
阿里云官方提供给了我们在编程语言上使用oss的示例,我们点击这个SDK下载
我们来到这个野米安查看SDK示例,右侧会出现官方文档,我们点击进入文档中心
这里可以查看需要在哪类语言上使用oss可以查看对应的示例,这里我选择JAVA
注意!!!注意!!!注意!!!
想要在java中使用oss对象存储服务,最低版本的jdk要1.7,这里文档上都有说明
这里有三种方式,MAVEN工程方式,Eclipse、Intelli JIDEA的方式
需要注意:在
配置好了后,我们接着往下看,我们选择简单上传
然后文档往下拉,找到文件上传,这里有官方提供的示例代码
accessKeyId就是我们刚刚创建的AccessKeyID还有Secret
bucketName:就是这里的名字
endpoint:就是这个节点,我们只需要对应赋值就行了
我这里的代码在文件上传结束后,返回的是一个访问该连接图片的地址,固定写就可以了,参数列表为文件的字节流,和上传的文件名
package com.sky.utils;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.io.ByteArrayInputStream;
@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
/**
* 文件上传
*
* @param bytes
* @param objectName
* @return
*/
public String upload(byte[] bytes, String objectName) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 创建PutObject请求。
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
//文件访问路径规则 https://BucketName.Endpoint/ObjectName
StringBuilder stringBuilder = new StringBuilder("https://");
stringBuilder
.append(bucketName)
.append(".")
.append(endpoint)
.append("/")
.append(objectName);
log.info("文件上传到:{}", stringBuilder.toString());
return stringBuilder.toString();
}
}
进行测试,注意使用IO流读取文件
package test;
import com.sky.utils.AliOssUtil;
public class osstest {
public static void main(String[] args) {
AliOssUtil aliOssUtil = new AliOssUtil("oss-cn-hangzhou.aliyuncs.com","key","secret","sxy-project");
// 这里得使用文件的io流读取文件,
String file = "D:\\2.png";
String fileName = "2.jpg";
// 参数1:转成字节数组 参数2:文件名
String filePath = aliOssUtil.upload(file.getBytes(), fileName);
System.out.printf(filePath);
}
}