Python 基于阿里云的OSS对象存储服务实现将文件上云框架
文章目录
- Python 基于阿里云的OSS对象存储服务实现将文件上云框架
- 一、前言
- 二、阿里云配置
- 1、获取用户AKEY和AKeySecret
- 2、创建Bucket
- 三、Python 阿里云oss上云框架
- 1、安装oss2依赖库
- 2、阿里云oss python
一、前言
未来的Py开发者们请上座,在平常开发的时候,经常有本地文件上云的需求,遂写一下这一篇上云文档。
二、阿里云配置
在阿里云注册一个账户
购买对象存储OSS资源包:对象存储 OSS 资源包(40GB存储 5块)
购买了服务之后,下面就是怎么使用这个OSS对象存储服务了
1、获取用户AKEY和AKeySecret
(1)点击头像–>AccessKey管理
(2)点击创建AccessKey
保存生成的AccessKey ID、AccessKey Secret
2、创建Bucket
阿里云oss Bucket官网
创建Bucket
保存存储空间名称和Endpoint
注:到现在你就拿到了四个配置数据:accessKeyId、accessKeySecret、bucketName、endpoint。
三、Python 阿里云oss上云框架
本框架只涉及五个基本需求:文件上传、文件下载、生成文件下载直链、文件下载、文件查询
有更多业务需求的可以参考:阿里云官方Oss的API文档
1、安装oss2依赖库
pip install oss2
更详细参考:oss2 Github仓库
2、阿里云oss python
阿里云相关Python代码如下
ps:init部分是参考,需要你将之前拿到的数据填进出。
# -*- coding:utf-8 -*-
"""
@Author: 风吹落叶
@Contact: waitKey1@outlook.com
@Version: 1.0
@Date: 2024/6/8 20:33
@Describe:
"""
import oss2
class AliyunOss():
def __init__(self):
'''
:param self:
:return:
:des: # 1、信息初始化
'''
self.accessKeyId='LTAI5tKozVqR28pgPw64' # 从阿里云查询到的 AccessKey 的ID
self.accessKeySecret="xBFoqMyGQmM5sm7EIkWwVbuQkcQ" # 从阿里云查询到的 AccessKey 的Secret
# 使用代码嵌入RAM用户的访问密钥配置访问凭证
auth=oss2.Auth(self.accessKeyId,self.accessKeySecret)
self.endpoint='oss-cn-beijing.uncs.com' # 阿里云从Bucket中查询到的endpoint
self.bucketName='test2406' # 阿里云从Bucket中查询到的Bucket的名称
# 2、bucket 配置创建
self.bucket=oss2.Bucket(auth,self.endpoint,self.bucketName) # 填写Bucket名称
def putFile(self,outFile,localFile):
"""
:param localFile: 本地文件路径
:param outFile: 云存储路径
:return: 访问链接
"""
# 本地文件上传oss
self.bucket.put_object_from_file(outFile, localFile)
return "https://{}.{}/{}".format(self.bucketName, self.endpoint, outFile)
def loadFile(self,outFile,localFile):
"""
:param localFile: 本地文件路径
:param outFile: 云存储路径
"""
# oss下载文件到本地
self.bucket.get_object_to_file(outFile,localFile)
def delFile(self,outFile):
"""
:param outFile: 云文件存储路径
"""
# oss 删除云文件
self.bucket.delete_object(outFile)
def getFileUrl(self,outFile):
'''
:param outFile: 云存储文件地址
:return:
'''
return "https://{}.{}/{}".format(self.bucketName, self.endpoint, outFile)
def findFile(self,prefix='',marker='',max_keys=''):
"""
:param prefix:限制返回的存储空间名称必须以prefix作为前缀。如果不指定该参数,则返回所有存储空间。
:param marker:限制结果从marker之后按字母排序的第一个开始返回。如果不指定该参数,则从头开始返回数据。
:param max_keys:限定此次返回存储空间的最大个数。取值范围:1~1000 、默认值:100
:return: 列举满足指定条件的存储空间。
"""
objs={}
for obj in oss2.ObjectIterator(self.bucket,prefix=prefix,marker=marker,max_keys=max_keys):
objs[obj.key]=obj.size//1000
return objs
if __name__=="__main__":
oss=AliyunOss()
# 1、 文件上传演示
localfile='./test.png'
outfile='img/test.png'
url=oss.putFile(outfile,localfile)
print('上传文件下载直链:',url)
# 2、 文件下载演示
outfile = 'img/test.png'
localfile = './test_download.png'
oss.loadFile(outfile, localfile)
# 3、 文件查询演示
obj = oss.findFile()
print(obj)
# 4、文件生成直链
url=oss.getFileUrl(outfile)
print('文件url:',url)
# 5、 文件删除
# outfile = 'img/test.png'
# oss.delFile(outfile)
# obj = oss.findFile()
# print('删除后空间',obj)