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
@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);
    }
}

然后我们回到oss进行查看:发现上传成功了,但是图片是坏的,因为我们没有使用IO流读取文件

版权声明:本文为博主作者:树若逝花若殇原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/shixuyong/article/details/136067829

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2024年4月22日
下一篇 2024年4月22日

相关推荐