记录——python与华为云对象存储服务OBS

前言

      之前使用华为云数据库其实主要是为了存储自己的图片,但后面发现如果用数据库存储图片的话将面临主要两个问题。
      第一,数据库数据类型有限制,不方便我们操作,不够灵活,当我们想要再存储其它东西的时候还需要修改数据库列的类型。
      第二,因为我主要是为了存储图片,如果想要通过python存储图片到数据库的话,中间有一个数据类型转化的过程,每次都需要转码以及解码,这个过程浪费了很多时间以及资源。(还有很多脑细胞)
      因此,我选择了数据库+云存储的方式来实现图片的存储以及管理(很多人应该都是这么做的吧)
      本文呢就是主要介绍一下怎么通过python来创建以及使用华为云的云数据存储服务OBS。(最基础的,自己使用的经验,没用到的也没去接触)
      刚开始我有点担心速度的问题,后面发现我想多了,图片大小1.17MB,上传速度实测0.5s左右,下载速度实测也在0.5s左右。
      如果发现文章哪里有问题,欢迎指正。

创建桶

      首先呢,我们在华为云的服务列表里的存储类里面找到对象存储服务OBS。进入之后我们点击右上角的创建桶。在这里插入图片描述
      具体怎么配置的话还是看你的使用情况,我的因为是经常性的使用且都是小文件,所以是这么配置的。在这里插入图片描述
      配置完成后点立即创建就完成了。官方介绍的使用流程是分成五步的,但是我因为没有特殊需求就没有进行配置,感兴趣的话可以自己了解下。我们刚刚完成了第一步的创建,第二第三步我直接跳过了,第四项的话它默认是帮你监控的,如果你需要监控其它什么数据的话看可以自己设置下,最后的第五步就是需要你花钱了(创建桶是免费的)在这里插入图片描述
      我们点击购买资源包。下面的这个是我买的配置,主要是单az和多az那里别选错了,其它的根据自己的需求来就行了。同样价格还是很便宜的。在这里插入图片描述
      购买之后我们基本就配置的差不多了。下面一步,我们需要找到个人凭证。在这里插入图片描述
      在我的凭证里面有个访问密钥,我们新增一个密钥。新增完成后网页会自动下载一个csv文件。别误删了,每个密钥好像都是只能下载这一次。当然,不嫌麻烦可以再新增。。。csv文件里面总共有三项。第一项是你华为云账号的名称,后面的Access Key Id和Secret Access Key就是你的id和密码了。此外,我们还需要一个信息,就是我们创建桶的访问地址,我们点击我们的桶,在基本信息里面可以看到个访问域名,我们将这个信息记下来。下面我们就可以开始python端的实现了。

python端实现

      同样我这里就是使用的官方的SDK,具体的大家可以在官方SDK文档里面找,我这里给大家演示的就是文件的上传和下载了。
      首先我们要安装官方的SDK,就直接跟安装其它第三方库一样pip install esdk-obs-python就可以了。

文件上传

from obs import ObsClient
from datetime import datetime

start = datetime.now()#用来计时
# 创建ObsClient实例
obsClient = ObsClient(
    access_key_id='Access Key Id',#刚刚下载csv文件里面的Access Key Id
    secret_access_key='Secret Access Key',#刚刚下载csv文件里面的Secret Access Key
    server='https://访问域名'#这里的访问域名就是我们在桶的基本信息那里记下的东西
)
# 使用访问OBS
# 调用putFile接口上传对象到桶内
resp = obsClient.putFile('桶的名称', '文件存储在桶内的名称', file_path='要上传的那个文件的本地路径')
if resp.status < 300:
    # 输出请求Id
    print('requestId:', resp.requestId)
else:
    # 输出错误码
    print('errorCode:', resp.errorCode)
    # 输出错误信息
    print('errorMessage:', resp.errorMessage)
# 关闭obsClient
obsClient.close()
end = datetime.now()
print(end-start)#打印出使用的总时间

文件下载

from obs import ObsClient
from datetime import datetime

start = datetime.now()#用来计时
# 创建ObsClient实例
obsClient = ObsClient(
    access_key_id='Access Key Id',#刚刚下载csv文件里面的Access Key Id
    secret_access_key='Secret Access Key',#刚刚下载csv文件里面的Secret Access Key
    server='https://访问域名'#这里的访问域名就是我们在桶的基本信息那里记下的东西
)
# 调用getObject接口下载桶内对象
# 本地路径记得加上文件名和后缀  比如F:/test_picture/1.jpg
resp = obsClient.getObject('桶的名称', '文件存储在桶内的名称', downloadPath='下载到的本地路径')
if resp.status < 300:
    print('requestId:', resp.requestId)
    print('url:', resp.body.url)
else:
    print('errorCode:', resp.errorCode)
    print('errorMessage:', resp.errorMessage)

# 关闭obsClient
obsClient.close()
end = datetime.now()
print(end-start)#打印出使用的总时间
  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
你可以使用 Java SDK 来实现华为云对象存储OBS的文件上传。以下是一个简单的示例代码: ```java import java.io.File; import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.PutObjectResult; public class ObsUploadDemo { public static void main(String[] args) throws KeyManagementException, NoSuchAlgorithmException, ObsException, IOException { // 创建ObsClient对象 ObsClient obsClient = new ObsClient("yourAccessKeyId", "yourSecretAccessKey", "yourEndpoint"); // 设置bucket名称和对象名称 String bucketName = "yourBucketName"; String objectKey = "yourObjectName"; // 设置本地文件路径 String filePath = "yourLocalFilePath"; // 上传文件 File file = new File(filePath); PutObjectResult result = obsClient.putObject(bucketName, objectKey, file); // 打印上传结果 System.out.println("请求ID:" + result.getRequestId()); System.out.println("ETag:" + result.getEtag()); // 关闭ObsClient对象 obsClient.close(); } } ``` 其中,`yourAccessKeyId` 和 `yourSecretAccessKey` 分别是你的华为云账号的Access Key ID 和 Secret Access Key;`yourEndpoint` 是你的OBS服务的访问域名;`yourBucketName` 是你要上传的存储桶名称;`yourObjectName` 是你要上传的对象名称;`yourLocalFilePath` 是你要上传的本地文件路径。 注意,以上代码仅作为示例,实际使用时需要根据你的具体情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值