阿里云文件上传/图像服务调用

基本概念

oss:对象存储服务,它由若干bucket构成;

bucket:最基本的对象存储单元,上级是oss;

AccessKeyID:RAM访问控制当中,为了方便对人员管理而引入的概念;方便给用户授权对oss存储对象进行访问;在RAM访问控制中,有用户组,用户的概念,一个用户可以加入多个用户组;每个用户都有一个唯一的AccessKey ID;

AccessKeySecret:类似于密钥,和AccessKeyID配合使用,每个AccessKeyID都会有一个AccessKeySecret与之匹配;

Endpoint:地域节点,可以在oss管理控制台概览里面查看,外网访问和内网访问是不一样的;

阿里云OSS服务的使用

使用OSS服务的使用步骤:

RAM访问控制

创建用户,获取用户的AccessKeyID和AccessKeySecret,注意AccessKeySecret只在用户创建成功后会显示,此时应该妥善保存,以免遗忘。

创建用户组。可选。方便对多个用户进行授权管理。

用户授权。非常重要。对于创建的用户,如果需要访问bucket的对象,需要给其授权AliyunIVPDFullAccess;

用户组授权。类似于用户授权。它与用户授权的区别是:用户组的授权对于其组内的所有用户有效(前提是该用户的权限继承自用户组的情况下,这通常是默认情况)。而用户授权只对该特定用户有效。

OSS对象存储

进入oss控制台,打开bucket列表,创建新的bucket。bucket是对象存储的基本管理单元。所以他的命名应该符合对象的特性或用途。

授权。如果需要读写,则需要授权为公共读写。

代码实例

from pathlib import Path
from concurrent import futures
import requests
import oss2
import pandas
import cv2
import base64

def upload_image_to_oss(bucket,bucket_domain_name,imgdata,imgpath):
    if not bucket.object_exists(imgpath):
        bucket.put_object(imgpath,imgdata,headers = oss2.CaseInsensitiveDict())
    return f'{bucket_domain_name}/{imgpath}'


def image_data_from_url(image_url):
    try:
        rep = requests.get(image_url,
                           headers={
                               'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 '
                                             '(KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
                               'Accept': '*/*',
                               'Accept-Encoding': 'gzip, deflate'
                           },
                           timeout=10)
        rep.raise_for_status()
        return rep.content
    except (requests.exceptions.ConnectTimeout,
            requests.exceptions.ReadTimeout):
        raise RuntimeError('请求图片数据超时')

def image_data_from_local(image_path):
    imgformat = '.' + image_path.rsplit('.',1)[1]
    if imgformat == '.png' or imgformat == ".PNG":
        image = cv2.imread(image_path,cv2.IMREAD_UNCHANGED)
    else:
        image = cv2.imread(image_path,cv2.IMREAD_COLOR)
    imencode = cv2.imencode(imgformat, image)[1]
    strbase64 = str(base64.b64encode(imencode))[2:-1]
    img_bin = base64.b64decode(strbase64)
    return img_bin


if __name__ == '__main__':
    #oss里面新建的bucket的名字,可以在oss控制台bucket list里面查询
    OSS_BUCKET = 'your_bucket_name'
    #RAM访问控制里新建用户的keyID和keysecret
    OSS_KEY_ID = 'your_AccessKeyID'
    OSS_SECRET_KEY = 'your_AccessKeySecret'
    #end point,在oss控制台概览里面可以查到
    OSS_REGION = 'oss-cn-shanghai.aliyuncs.com'
    auth = oss2.Auth(OSS_KEY_ID, OSS_SECRET_KEY)
    bucket = oss2.Bucket(auth, OSS_REGION, OSS_BUCKET)
    #bucket_domain_name可以在oss控制台概览里面查到
    bucket_domain_name = "your_bucket_domain_name"
    image_data1 = image_data_from_url("https://ssss/sss.png")
    image_data2 = image_data_from_local("./template1.jpg")
    url1 = upload_image_to_oss(bucket = bucket,bucket_domain_name = bucket_domain_name,imgdata = image_data1,imgpath = "dddd/pppq.png")
    url2 = upload_image_to_oss(bucket = bucket,bucket_domain_name = bucket_domain_name,imgdata = image_data2,imgpath = "dddd/qqqp.jpg")
    print(url1)
    print(url2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值