java中如何使用,阿里云OSS对象存储服务
时间:2024-04-21 14:10:27 来源:网络cs 作者:欧阳逸 栏目:广告工具 阅读:
文章目录目录
1、打开阿里云官网并登录
2、开通OSS对象存储服务
3、在java中使用这个OSS对象存储服务
3.1、获取AccessKey
3.3、在Java中使用oss
1、打开阿里云官网并登录
打开阿里云官网,点击右上角的登录,进行登陆账号
2、开通OSS对象存储服务
我们在这里选择控制台
点击左上角的三条线
可以看到这里阿里云提供了特别多的服务,我们在这里搜索oss,即可看到oss对象存储服务,我们打开它
我们点击开通
我们就会来到这个页面,想要存储数据我们得用到Bucket列表并进行创建Bucket
打开以下页面后,我们只需要选择这两个即可,有其他需求的看你们自己
然后我们选择确定,这样就创建了一个Bucket了
然后我们点击bucket列表看到自己新建的bucket,我们进行打开
就可以在这里做上传文件或是其他的操作了
3、在java中使用这个OSS对象存储服务
想要在自己的项目中使用阿里云的oss对象存储服务,我们需要三个东西,一个是bucket、AccessKey(id, 密钥)、endpoint
bucket有了、endpoint也有了、就差一个AccessKey了,这个是你使用阿里云服务的权证
3.1、获取AccessKey
我们点击右上角头像,选择AccessKey管理
我们来到这个页面点击创建
然后我们可以看到下面这个,我们得到了ID 和Secret就可以了,我们可以选择下载csv文件进行key的保存,然后点击确定即可
3.3、在Java中使用oss
阿里云官方提供给了我们在编程语言上使用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@Slf4jpublic 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); }}
然后我们回到oss进行查看:发现上传成功了,但是图片是坏的,因为我们没有使用IO流读取文件
本文链接:https://www.kjpai.cn/news/2024-04-21/160940.html,文章来源:网络cs,作者:欧阳逸,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!