Python 基于阿里云的OSS对象存储服务实现本地文件上云框架

Python 基于阿里云的OSS对象存储服务实现将文件上云框架

一、前言

未来的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)

相关推荐

  1. 阿里对象存储OSS服务

    2024-06-09 08:30:08       42 阅读
  2. SpringBoot中实现阿里OSS对象存储

    2024-06-09 08:30:08       34 阅读
  3. 阿里 OSS对象存储攻防

    2024-06-09 08:30:08       8 阅读
  4. 阿里对象存储OSS使用笔记

    2024-06-09 08:30:08       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 08:30:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 08:30:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 08:30:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 08:30:08       20 阅读

热门阅读

  1. UI与前端:揭秘两者的微妙差异

    2024-06-09 08:30:08       9 阅读
  2. 设计模式及其在软件开发中的应用

    2024-06-09 08:30:08       11 阅读
  3. 《数据库原理与应用》

    2024-06-09 08:30:08       9 阅读
  4. AI革命下的下一代硬件设备展望

    2024-06-09 08:30:08       9 阅读
  5. 速盾:重生之我在做高防cdn

    2024-06-09 08:30:08       6 阅读
  6. 微信小程序:实现按钮跳转到非tabbar页面

    2024-06-09 08:30:08       7 阅读
  7. Sass前端变量:深度探索与高效运用

    2024-06-09 08:30:08       10 阅读
  8. 前端面试题日常练-day59 【面试题】

    2024-06-09 08:30:08       10 阅读
  9. C++常用标准库函数(长期更新中)

    2024-06-09 08:30:08       9 阅读
  10. 在 ASP.NET Core 中实现速率限制中间件

    2024-06-09 08:30:08       11 阅读