阿里云对象存储OOS入门教程--JAVA

阿里云对象存储OOS入门教程--JAVA

什么是对象存储OSS

官网的描述:
链接: link
简单的理解就是对象存储是一种海量、安全、低成本、可靠的云存储服务,不需要占用本机硬盘的内存,也不用担心文件数据的丢失,并且享有自动化运维的服务。而在web开发中,前端涉及到文件上传的业务,前端请求文件上传请求服务端,在服务器本地磁盘当中,就不需要存储这个文件,直接上传到OSS,由其进行存储和管理。

创建OSS

  1. 登录阿里云 官网链接: link
    官网

  2. 登陆上以后点击右上角的控制台按钮;
    点击控制台

  3. 将鼠标拖到左上角的菜单栏上;
    在这里插入图片描述

  4. 找到对象存储OSS并点击;
    在这里插入图片描述

  5. 如果没有购买他会提示你没有开通需要购买(提示:如果你是学生的话可以去账号里进行实名认证,免费领取三个月试用的OSS,如图)
    点击立即查看
    在这里插入图片描述

进入这样的界面往下滑
在这里插入图片描述在这里可以领取三个月的OSS
在这里插入图片描述

  1. 创建Bucket
    Bucket(存储空间):用户存储对象的容器。
    当你购买结束OSS后,回到菜单中的对象存储OSS之后可以看到这样的界面,此时点击Bucket列表后创建Bucket或者直接创建Bucket;
    在这里插入图片描述

创建Bucket时,只需要取一个不重名的名字,再将读写权限改为公共读即可(如果错过了的话可以在Bucket的设置中修改)
在这里插入图片描述

  1. 获取AccessKey(密钥)
    鼠标光标拖到右上角用户时会弹出这样的界面,点击
    在这里插入图片描述

此时你需要创建你的AccessKey
在这里插入图片描述
下面的步骤需要注意,经过验证后,AccessKey Secret在新版本为了安全性会只显示一次,需要你将其保存好再继续进行下一步,如果后续信息泄露后也可以在本界面禁用该AccessKey 。

8.配置OSS:下载SDD
在对象存储OSS界面的菜单栏里最底部可以看到“SDK下载”,点击进入;
在这里插入图片描述
选择你使用的语言在这里插入图片描述
这里我用的是JAVA,所以我将以JAVA为例进行后续操作,JAVA1.7版本以上是可以不用下载的,可以通过maven进行配置直接点击其右上角的查看文档
在这里插入图片描述

点击左下角的在文档中心打开
在这里插入图片描述

在目录中找到开发参考/SDK参考/java/安装并点击
在这里插入图片描述

可以根据其描述找到自己对应的JAVA版本并将代码粘贴到pom文件中

9.文件上传
同样在文档目录中找到如图所示的简单上传并点击
在这里插入图片描述

可以看到给了好几种对象的上传示例代码,找到你需要的相应格式进行使用就可以了,记得要将endpoint 、bucketName 、objectName 改写成自己需要的格式。credentialsProvider 是来设置自己的AccessKey Id和AccessKey Secrete。

上传字符串
以下代码用于将字符串上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

public static void main(String[] args) throws Exception {
    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
    // 填写Bucket名称,例如examplebucket。
    String bucketName = "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    String objectName = "exampledir/exampleobject.txt";

    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

    try {
        // 填写字符串。
        String content = "Hello OSS,你好世界";

        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));

        // 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。
        // ObjectMetadata metadata = new ObjectMetadata();
        // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
        // metadata.setObjectAcl(CannedAccessControlList.Private);
        // putObjectRequest.setMetadata(metadata);
       
        // 上传字符串。
        PutObjectResult result = ossClient.putObject(putObjectRequest);            
    } 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();
        }
    }
}

上传Byte数组
以下代码用于将Byte数组上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

public static void main(String[] args) throws Exception {
    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
    // 填写Bucket名称,例如examplebucket。
    String bucketName = "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    String objectName = "exampledir/exampleobject.txt";


    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

    try {
        // 填写Byte数组。
        byte[] content = "Hello OSS, 你好世界".getBytes();
        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new ByteArrayInputStream(content));
        
        // 创建PutObject请求。
        PutObjectResult result = ossClient.putObject(putObjectRequest);            
    } 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();
        }
    }
}

上传网络流
以下代码用于将网络流上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

public static void main(String[] args) throws Exception {
    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
    // 填写Bucket名称,例如examplebucket。
    String bucketName = "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    String objectName = "exampledir/exampleobject.txt";
    // 填写网络流地址。
    String url = "https://www.aliyun.com/";

    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

    try {
        InputStream inputStream = new URL(url).openStream();
        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
        // 创建PutObject请求。
        PutObjectResult result = ossClient.putObject(putObjectRequest);            
    } 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();
        }
    }
}

}
上传文件流
以下代码用于将文件流上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

public static void main(String[] args) throws Exception {
    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
    // 填写Bucket名称,例如examplebucket。
    String bucketName = "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    String objectName = "exampledir/exampleobject.txt";
    // 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
    // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
    String filePath= "D:\\localpath\\examplefile.txt";

    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

    try {
        InputStream inputStream = new FileInputStream(filePath);
        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
        // 创建PutObject请求。
        PutObjectResult result = ossClient.putObject(putObjectRequest);
    } 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();
        }
    }
}

文件上传
使用文件上传,您可以将本地文件上传到OSS文件。

以下代码用于将本地文件examplefile.txt上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

public static void main(String[] args) throws Exception {
    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
    // 填写Bucket名称,例如examplebucket。
    String bucketName = "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    String objectName = "exampledir/exampleobject.txt";
    // 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
    // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
    String filePath= "D:\\localpath\\examplefile.txt";

    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

    try {
        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
        // 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。
        // ObjectMetadata metadata = new ObjectMetadata();
        // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
        // metadata.setObjectAcl(CannedAccessControlList.Private);
        // putObjectRequest.setMetadata(metadata);
        
        // 上传文件。
        PutObjectResult result = ossClient.putObject(putObjectRequest);           
    } 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();
        }
    }
}
  • 26
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!要使用Java上传图片到阿里云OSS(对象存储服务),您可以按照以下步骤进行操作: 1. 首先,您需要在阿里云上创建一个OSS存储桶(Bucket),并获取到访问密钥(Access Key ID和Access Key Secret)以及Endpoint(地域节点)信息。 2. 在Java项目中添加阿里云OSS SDK的依赖。您可以通过Maven添加以下依赖项: ```xml <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>2.9.0</version> </dependency> ``` 3. 在代码中引入必要的类和包: ```java import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; ``` 4. 创建OSSClient对象,并配置Endpoint、Access Key ID和Access Key Secret: ```java String endpoint = "your_endpoint"; String accessKeyId = "your_access_key_id"; String accessKeySecret = "your_access_key_secret"; OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); ``` 请将"your_endpoint"、"your_access_key_id"和"your_access_key_secret"替换为您的实际信息。 5. 构造上传文件的请求,并执行上传操作: ```java String bucketName = "your_bucket_name"; String objectName = "your_object_name"; String filePath = "your_local_file_path"; PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath)); PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); ``` 请将"your_bucket_name"、"your_object_name"和"your_local_file_path"替换为您的实际信息。 6. 关闭OSSClient: ```java ossClient.shutdown(); ``` 这样,您就可以使用Java上传图片到阿里云OSS了。希望对您有所帮助!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值