一 前言

最近使用到阿里云的产品OSS,用于临时存储线上抽取的数据,然后起本地化的流程去OSS拉回本地,进行自动化数据验证。OSS提供了web方式的管理控制台,命令行管理工具,提供了主流的SDK支持,而且自身保证OSS数据的一致性,上传下载自带数据校验。然而,如果将它纳入到自动化流程中,就需要脚本化支持对它进行操作或管理,本文使用python实现一个简单的OSS上传下载的操作类。

二 OSS简介

阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。其数据设计持久性不低于99.9999999999%(12 个 9),服务设计可用性(或业务连续性)不低于 99.995%。

OSS 具有与平台无关的 RESTful API 接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

您可以使用阿里云提供的 API、SDK 接口或者 OSS 迁移工具轻松地将海量数据移入或移出阿里云 OSS。数据存储到阿里云 OSS 以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)和归档存储(Archive)作为不经常访问数据的存储方式。

三 OSS操作的四个基本概念

访问密钥(AccessKey)= AccessKeyId + AccessKeySecret
AccessKey(简称 AK)指的是访问身份验证中用到的 AccessKeyId 和 AccessKeySecret。OSS 通过使用 AccessKeyId 和 AccessKeySecret 对称加密的方法来验证某个请求的发送者身份。AccessKeyId 用于标识用户;AccessKeySecret 是用户用于加密签名字符串和 OSS 用来验证签名字符串的密钥,必须保密。

访问域名(Endpoint)
Endpoint 表示 OSS 对外服务的访问域名。OSS 以 HTTP RESTful API 的形式对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名也是不同的。

存储空间(Bucket)
存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。您可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

四 python实现的OSS上传下载类

访问一个OSS,需要拿到AccessKeyId ,AccessKeySecret,Endpoint,Bucket,通过这四个信息即可建立OSS的连接,根据访问密钥具备的权限可以对bucket的对象进行操作,如,新建、删除、上传、下载等。

下面是python实现的OSS上传下载类,支持对指定OSS对象的目录层级或文件进行批量下载,或批量上传,仅供参考。

-----------------------------------------------------------------------------------------

代码请参考以下链接:

https://mp.weixin.qq.com/s?__biz=MjM5MTkxMTQ4Nw==&mid=2449052659&idx=1&sn=df81c081fa62bff2cb6e46b7114112ff&chksm=b2a368a385d4e1b59b97ee88e93a63f3b9911a0d2e32a70cbd0e802c411bfff0cfb643a924cc&token=724586817&lang=zh_CN#rd

------------------------------------------------------------------------------------------

一些使用体会

1) OSS是基于key-value的分布式存储模式,不同于层级式的存储,所以,遍历一个存储对象时,形如xxx/xxxx/的对象,也可能是文件类型,而不是目录,取决于你的prefix,可以使用obj.is_prefix()判断,当返回True时,表明是公共前缀(目录);
2) 上传时,如果oss不存在对应的路径,会自动创建,无需开发者关心,类似于执行了os.makedirs(multi_level_path)创建指定的目录后,再上传文件;
3) 同名文件直接覆盖,不存在时,自动创建,类似于文件操作的w+模式;


看完本文有收获?请转发分享给更多人

关注 【小蟒社区】,一起学Python

python实现阿里云OSS文件上传下载相关推荐

  1. 阿里云OSS文件上传下载,拿来即用

    什么是OSS 我们可以理解为就是一个资源服务器,在这之前我也尝试过Nginx当静态资源服务器,但效果比较一般,为什么选择阿里云OSS,只是因为最近刚好公司用到了,所以就接入了,还有其他的比如七牛云,腾 ...

  2. 阿里云OSS文件上传下载工具类

    引入依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss ...

  3. Java中阿里云OSS文件上传工具类

    阿里云OSS文件上传下载工具类 前言: 本质上就是获取配置文件信息,然后注入bean,调用sdk中提供的增删改方法: 为了避免同名文件会替换,用了hutool中唯一id生成+文件名做拼接 导入依赖:→ ...

  4. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...

  5. 解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题

    解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题 问题描述 java程序,使用阿里云oss文件上传服务,在测试时偶然发现,我用苹果手机开启高清进行摄像,将原图通过qq传到电脑上,在电 ...

  6. 阿里云oss文件上传工具类

    阿里云oss文件上传工具类 阿里云oss 阿里云oss 导入文件阿里云oss的maven依赖 <!-- 阿里云oss依赖 --><dependency><groupId& ...

  7. Java学习踩坑:阿里云OSS文件上传前端通过路径获取报403错误

    错误还原:我在做OSS文件上传头像时,发现头像的图片文件可以上传成功,也可以返回文件的路径.但是前端在拿着后端返回的文件图片路径去访问这个图片时,Response中的错误码为403.找了一下网上的资料 ...

  8. php阿里云oss文件上传

    php的文件上传 文件上传 php的文件上传放在了$_FILES数组里,单文件和多文件上传的区别在于$_FILES['userfile']['name']是否为数组, 不熟悉的可以读一下官方文档 单文 ...

  9. 阿里云oss文件上传(简单上传、服务端签名后直传)

    前置: 自行开通阿里oss服务: https://www.aliyun.com/product/oss?spm=a2c4g.11174283.J_8058803260.125.d9387da2TjNf ...

最新文章

  1. swift UI专项训练5 定制视图控制器
  2. WIn32中CInternetSession运行异常(afxCurrentAppName 为空)
  3. 26日上午网易等多家网站无法访问“剖析”
  4. 上海 |《PMCAFF 产品经理第一课》全面提升,微博副总裁、丁香园、1号店、淘宝、阿里巴巴产品总监最强分享...
  5. 微信小程序开发:学习笔记[8]——页面跳转及传参
  6. 光模块的正确安装方法和使用须知
  7. linux和python的关系_Python、Linux与我的缘分
  8. 多线程Thread中常用方法,优先级的使用
  9. 属性getter和setter
  10. angular要多久学会_成为优秀Angular开发者所需要学习的19件事
  11. [C#] 控制系统音量-第一章
  12. python爬虫抖音视频代码_python爬虫 抖音短视频解析下载
  13. jsonp跨域原理详解
  14. Windows 安装字体后,程序仍然提示找不到字体的解决办法——为所有用户安装字体
  15. 在尾注生成的参考文献后添加致谢等内容
  16. linux删除tmp文件找回,如何在 Linux 下快速找到被删除的文件?
  17. 可能致癌的几种化妆品
  18. 什么是SOL注入攻击?Land攻击?Ping of Death攻击?Teardrop攻击?
  19. [ Linux ] 可重入函数,volatile 关键字,SIGCHLD信号
  20. 超好看的个人网页,你还不fork一下?

热门文章

  1. Qt之撤销命令视图的使用(QUndoView)
  2. 音乐与动漫及游戏的关系--游戏动漫音乐音效制作 分贝块
  3. flume avro java_Flume的Avro Sink和Avro Source研究之一: Avro Source
  4. 文献笔记|自我管理相关 self- regulation
  5. USACO January 2014 Bronze Level
  6. (课程笔记)Learn How to Learn: Powerful mental tools to help you master tough subjects
  7. nginx使用ngx.req.get_body_data()获取不到请求体内容
  8. gpu z linux版本,GPU-Z 2.13.0发布,可检测到假冒的NVIDIA 显卡
  9. java实现谷歌支付后端验证订单
  10. 关于校招那些事(一)—— 简历