OSS 上传和删除图片 Python SDK

最近在搞一些全栈的小项目, 涉及到图片的上传, 删改等操作, 想着还是用这个云服务器来整一波, 阿里云的 OSS对象存储, 40G 1年9块钱, 值得拥有!

前提

  • 购买了阿里云 OSS 服务
  • 创建了 Access Key 和 Access Key Secret
  • 创建了一个 Bucket , 虽然也可以用代码, 但没有必要
  • 安装了 Python3.8+ 环境, 和 pip install oss3

实测演示

from oss2 import Auth, Bucket, ObjectIterator
 
# 设置Access Key ID和Access Key Secret
access_key_id = 'LTAI5tLxxxxx'
access_key_secret = 'Pk80TXXYEDTaQxxxxxxx'

# OSS服务地址, buket 的名称 (手工建的), 存储空间名称
endpoint = 'https://oss-cn-shenzhen.aliyuncs.com' 
bucket_name = 'yy' 

auth = Auth(access_key_id, access_key_secret)
bucket = Bucket(auth, endpoint, bucket_name)

bucket_path = 'https://' + bucket_name + '.'  + endpoint.split('//')[-1]



def put_image(local_file, file_name):
    # local_file 是要上传文件的完整路径
    # file_name 默认在 buket 下:  a.png 表示 yy/a.png;  
    # a/b.png 表示 yy/a/b.png, 不存在则新建, 存在则追加
    try:
        with open(local_file, 'rb') as fp:
            result = bucket.put_object(file_name, fp)
            if result.status == 200:
                # https://yy.oss-cn-shenzhen.aliyuncs.com/test/cj2.png
                image_url = bucket_path + '/' +  file_name
                print('上传成功!, 此图片链接为: ', image_url)
    except Exception as err:
        print(err)


def del_image(file_full_path):
    file_name = file_full_path.split("com/")[-1]
    bucket.delete_object(file_name)
    
    exist = bucket.object_exists(file_name)
    if not exist:
        print(file_name, ' 删除成功!')

        
if __name__ == '__main__':
    
    # 上传测试
    # put_image('./cjj.png', 'yg.png')
    
    # 删除
    del_image('https://yy.oss-cn-shenzhen.aliyuncs.com/test/cj3.png')
    

小结

  • 上传 API: put_object(file_name, fp)
  • 删除API: delete_object(file_name)
  • 存在API: object_exists(file_name)
posted @   致于数据科学家的小陈  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示

目录导航