说明

最近项目上需要开发一个服务去和华为云OBS集成获取一些业务上的文件,此处记录一下简单的java集成obs的入门,希望对大家快速入门有所帮助:)

实现效果

  • 上传对象
  • 下载到本地

操作步骤

1.开通obs

上华为云官网,注册账号后购买,支付后进入控制台。

2.获取ak/sk等信息

参考:
https://support.huaweicloud.com/eihealth_faq/eihealth_27_0007.html

3.获取官方java demo

https://github.com/huaweicloud/huaweicloud-sdk-java-obs/blob/master/app/src/test/java/samples_java
我这里拿的是:DownloadSample.java

/**
* This sample demonstrates how to download an object
* from OBS in different ways using the OBS SDK for Java.
*/
public class DownloadSample
{
private static final String endPoint = "https://obs.cn-east-3.myhuaweicloud.com"; private static final String ak = "替换"; private static final String sk = "替换"; private static ObsClient obsClient; private static String bucketName = "blogstore"; private static String objectKey = "stringdemo"; private static String localFilePath = "d:/temp/" + objectKey; public static void main(String[] args)
throws IOException
{
ObsConfiguration config = new ObsConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
try
{
/*
* Constructs a obs client instance with your account for accessing OBS
*/
obsClient = new ObsClient(ak, sk, config); /*
* Create bucket
*/
System.out.println("Create a new bucket for demo\n");
//obsClient.createBucket(bucketName); /*
* Upload an object to your bucket
*/
System.out.println("Uploading a new object to OBS from a file\n");
obsClient.putObject(bucketName, objectKey, createSampleFile()); System.out.println("Downloading an object\n"); /*
* Download the object as an inputstream and display it directly
*/
simpleDownload(); File localFile = new File(localFilePath);
if (!localFile.getParentFile().exists())
{
localFile.getParentFile().mkdirs();
} System.out.println("Downloading an object to file:" + localFilePath + "\n");
/*
* Download the object to a file
*/
downloadToLocalFile(); System.out.println("Deleting object " + objectKey + "\n");
//obsClient.deleteObject(bucketName, objectKey, null); }
catch (ObsException e)
{
System.out.println("Response Code: " + e.getResponseCode());
System.out.println("Error Message: " + e.getErrorMessage());
System.out.println("Error Code: " + e.getErrorCode());
System.out.println("Request ID: " + e.getErrorRequestId());
System.out.println("Host ID: " + e.getErrorHostId());
}
finally
{
if (obsClient != null)
{
try
{
/*
* Close obs client
*/
obsClient.close();
}
catch (IOException e)
{
}
}
}
} private static void downloadToLocalFile()
throws ObsException, IOException
{
ObsObject obsObject = obsClient.getObject(bucketName, objectKey, null);
ReadableByteChannel rchannel = Channels.newChannel(obsObject.getObjectContent()); ByteBuffer buffer = ByteBuffer.allocate(4096);
WritableByteChannel wchannel = Channels.newChannel(new FileOutputStream(new File(localFilePath))); while (rchannel.read(buffer) != -1)
{
buffer.flip();
wchannel.write(buffer);
buffer.clear();
}
rchannel.close();
wchannel.close();
} private static void simpleDownload()
throws ObsException, IOException
{
ObsObject obsObject = obsClient.getObject(bucketName, objectKey, null);
displayTextInputStream(obsObject.getObjectContent());
} private static void displayTextInputStream(InputStream input)
throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
while (true)
{
String line = reader.readLine();
if (line == null)
break; System.out.println("\t" + line);
}
System.out.println(); reader.close();
} private static File createSampleFile()
throws IOException
{
File file = File.createTempFile("obs-java-sdk-", ".txt");
file.deleteOnExit();
Writer writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write("abcdefghijklmnopqrstuvwxyz\n");
writer.write("0123456789011234567890\n");
writer.close(); return file;
} }

4.运行demo

创建工程添加pom依赖:

<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java-bundle</artifactId>
<version>[3.21.8,)</version>
</dependency>

修改样例代码中的配置项信息,运行。

常用链接

1.获取地区endpoint

https://developer.huaweicloud.com/endpoint

2.spingboot集成obs

https://www.dandelioncloud.cn/article/details/1389618552004751362

常见错误

1.endpoint地区不对

Response Code: 400

Error Message: The location constraint is incompatible for the region specific endpoint this request was sent to.

java集成华为云obs上传下载实战的更多相关文章

  1. JAVA Web 之 struts2文件上传下载演示(二)(转)

    JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...

  2. JAVA Web 之 struts2文件上传下载演示(一)(转)

    JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...

  3. FastDFS实现文件上传下载实战

    正好,淘淘商城讲这一块的时候,我又想起来当时老徐让我写过一个关于实现FastDFS实现文件上传下载的使用文档,当时结合我们的ITOO的视频系统和毕业论文系统,整理了一下,有根据网上查到的知识,总结了一 ...

  4. Java实现对文件的上传下载操作

    通过servlet,实现对文件的上传功能 1.首先创建一个上传UploadHandleServlet ,代码如下: package me.gacl.web.controller; import jav ...

  5. Java使用 SFTP实现文件上传下载

    package com.lijy.util; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import co ...

  6. Java Web(十二) commons-fileupload上传下载

    今天心态正常...继续努力.. --WH 一.上传原理和代码分析. 上传:我们把需要上传的资源,发送给服务器,在服务器上保存下来. 下载:下载某一个资源时,将服务器上的该资源发送给浏览器. 难点:服务 ...

  7. 基于tcp的云盘上传下载的模拟

    老师的博客: server端 import json import struct import json import struct import socket import os sk = sock ...

  8. java 如何实现大文件上传下载(传输)各种格式

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...

  9. 2013第38周日Java文件上传下载收集思考

    2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...

  10. SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)

    SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...

随机推荐

  1. CSS - 工具类 tool.css

    /* flex */ .flex{     display: flex; } .f1{     flex:1 } .flex-center{     align-items: center;      ...

  2. WebApi使用Swagger

    services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API ...

  3. 如何看待《李跳跳》APP因被腾讯公司发律师函称“不正当竞争”而无限期停止更新?

    一波未平一波又起,继李跳跳无限期停更后,又一安卓神奇工具被下发律师函!近期各路安卓工具APP,被某讯大厂可谓是尽数剿灭~ 不难看出此次行动是"蓄谋已久"了.与李跳跳.大圣净化类似的 ...

  4. Chrome显示和更改显示网页字符集的方法

    Chrome显示和更改显示网页字符集的方法 背景 前段时间学习和总结了unicode和utf8的一些知识. 当时想到应该学习和整理一下网站网页的编码格式字符集相关的内容 想着既然给自己立了flag, ...

  5. [转帖]充分利用 Oracle SQL监控

    https://zhuanlan.zhihu.com/p/397834311 经常被问到查看执行计划的最佳工具是什么,对我来说,答案总是SQL Monitor(包含在 Oracle Tuning Pa ...

  6. [转帖]Linux系统下rpm命令使用详解

    简介 rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采用. ...

  7. 使用rpm打包nacos然后部署为systemd服务开机自动启动的方法

    背景 Nacos是阿里开源的服务注册组件,能够简单的实现微服务的注册与发现机制. 但是官方并没有提供 sytemd的服务脚本, 也没有提供rpm包的方式. 公司里面使用 nacos的场景越来越多, 部 ...

  8. Mac 版的 Quicker CirMenu

    之前在Windows上用过一款圆盘菜单工具Quicker, 感觉非常方便, 换成Macos后,一直没有找到类似应用. 最近终于发现,一款好用的快捷键收集,触发工具CirMenu. 其核心功能是可以根据 ...

  9. k8s单master集群通过备份etcd还原集群

    准备环境 通过kubeadm 安装的单master kubernetes 1.19+ 集群 容器环境:containerd 客户端工具:kubeadm.kubectl.etcdctl.crictl 备 ...

  10. [1] HEVD 学习笔记:HEVD 环境搭建

    1. HEVD 概述 + 环境搭建 ​ HEVD作为一个优秀的内核漏洞靶场受到大家的喜欢,这里选择x86的驱动来学习内核漏洞,作为学习笔记记录下来 实验环境 环境 备注 调试主机操作系统 Window ...