阿里云OSS文件上传下载与文件删除及检索示例

实践环境

运行环境:

Python 3.5.4

CentOS Linux release 7.4.1708 (Core)/Win10

需要安装以下类库:

pip3 install setuptools_rust1.1.2

pip3 install Crypto1.4.1 # Win10下,安装后,需要更改 site-packages下crypto包名称为Crypto

pip3 install cryptography3.3.2 # 注意,如果不指定版本,安装oss2时会报错:error: can't find Rust compiler

pip3 install oss22.15.0

上传本地文件到阿里云OSS示例

#!/usr/bin/env python
# -*- coding: utf-8 -*- import traceback
import os # 批量上传文件到OSS
def upload_files(bucket, target_dir_path, exclusion_list=[]):
oss_objects_path = []
target_dir_path = os.path.normpath(target_dir_path).replace('\\', '/')
for root, dirs, files in os.walk(target_dir_path):
for file in files:
target_file_path = os.path.normpath(os.path.join(root, file))
target_file_relative_path = target_file_path.replace('\\', '/').replace(target_dir_path, '').lstrip('/')
if target_file_relative_path in exclusion_list:
continue
object_path = 'f2b/artifacts/web-admin-react/%s' % target_file_relative_path
upload_file(bucket, target_file_path, object_path)
oss_objects_path.append(object_path)
return oss_objects_path # 上传文件到OSS
def upload_file(bucket, target_file_path, object_path):
with open(target_file_path, 'rb') as fileobj:
res = bucket.put_object(object_path, fileobj) # object_path为Object的完整路径,路径中不能包含Bucket名称。
if res.status != 200:
raise Exception('upload %s error,status:%s' % (target_file_path, res.status)) if __name__ == '__main__':
try:
import oss2
auth = oss2.Auth('ossAccessKeyId', 'ossAccessKeySecret') # oss2.Bucket(auth, endpoint, bucket_name)
# endpoint填写Bucket所在地域对应的endpoint,bucket_name为Bucket名称。以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。
bucket = oss2.Bucket(auth, 'https://oss-cn-shenzhen.aliyuncs.com', 'exampleBucket') oss_objects_path = [] # 存放上传成功文件对应的OSS对象相对路径
target_path = 'D:\\artifact-eb34ea94.tar.gz'
if not os.path.exists(target_path):
print('success:false,待上传路径(%s)不存在' % target_path)
exit(0) if os.path.isdir(target_path): # 如果为目录
oss_objects_path = upload_files(bucket, target_path)
else:
object_path = 'f2b/artifacts/web-admin-react/artifact-eb34ea94.tar.gz'
upload_file(bucket, target_path, object_path)
oss_objects_path.append(object_path) print(','.join(oss_objects_path)) except Exception:
print('success:false,%s' % traceback.format_exc())

参考连接:

https://help.aliyun.com/document_detail/88426.htm?spm=a2c4g.11186623.0.0.9e7e7dbbsOWOh6#t22317.html

https://help.aliyun.com/document_detail/31848.html

下载阿里云OSS文件对象到本地文件示例

#!/usr/bin/env python
# -*- coding: utf-8 -*- import traceback if __name__ == '__main__':
try:
import oss2
auth = oss2.Auth('ossAccessKeyId', 'ossAccessKeySecret') # oss2.Bucket(auth, endpoint, bucket_name)
# endpoint填写Bucket所在地域对应的endpoint,bucket_name为Bucket名称。以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。
bucket = oss2.Bucket(auth, 'https://oss-cn-shenzhen.aliyuncs.com', 'exampleBucket') target_file_local_path = 'D:\\artifacts-17a86f.tar.gz' # 本地文件路径
oss_object_path = 'f2b/artifacts/cloud-f2b-web-admin-react/artifact-eb34ea94.tar.gz' # bucket.get_object_to_file('object_path', 'object_local_path')
# object_path 填写Object完整路径,完整路径中不包含Bucket名称,例如testfolder/exampleobject.txt。
# object_local_path 下载的Object在本地存储的文件路径,形如 D:\\localpath\\examplefile.txt。如果指定路径的文件存在会覆盖,不存在则新建。
try:
res = bucket.get_object_to_file(oss_object_path, target_file_local_path)
if res.status != 200:
print('success:false,download fail, unknow exception, status:%s' % res.status)
except Exception:
print('success:false,%s' % traceback.format_exc())
except Exception:
print('success:false,%s' % traceback.format_exc())

参考连接:

https://help.aliyun.com/document_detail/88442.html

列举指定前缀的所有文件

#!/usr/bin/env python
# -*- coding: utf-8 -*- import traceback if __name__ == '__main__':
try:
import oss2
auth = oss2.Auth('ossAccessKeyId', 'ossAccessKeySecret') bucket = oss2.Bucket(auth, 'https://oss-cn-shenzhen.aliyuncs.com', 'exampleBucket') result_file_list = []
for obj in oss2.ObjectIteratorV2(bucket, prefix='f2b/www/alpha/f2b/icec-cloud-f2b-mobile'):
result_file_list.append(obj.key)
print(obj.key)
print(','.join(result_file_list))
except Exception:
print('success:false,%s' % traceback.format_exc())

参考连接:

https://help.aliyun.com/document_detail/88458.html

批量删除OSS对象

#!/usr/bin/env python
# -*- coding: utf-8 -*- import sys
import traceback if __name__ == '__main__':
try:
import oss2 auth = oss2.Auth('ossAccessKeyId', 'ossAccessKeySecret')
bucket = oss2.Bucket(auth, 'https://oss-cn-shenzhen.aliyuncs.com', 'exampleBucket') oss_object_path_list = ''.join(sys.argv[1:2]).split(',') index = 0
oss_objects_to_delete = oss_object_path_list[index: index+1000] # API限制,每次最多删除1000个文件
while oss_objects_to_delete:
result = bucket.batch_delete_objects(oss_object_path_list[index: index+1000])
# 打印成功删除的文件名。
print(result.deleted_keys)
print('批量删除以下OSS对象成功')
print(''.join(result.deleted_keys)) index += 1000
oss_objects_to_delete = oss_object_path_list[index: index+1000]
except Exception:
print('success:false,%s' % traceback.format_exc())

参考连接:

https://help.aliyun.com/document_detail/88463.html

Python 阿里云OSS文件上传下载与文件删除及检索示例的更多相关文章

  1. Thinkphp整合阿里云OSS图片上传实例

    Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...

  2. SpringMVC文件上传下载(单文件、多文件)

    前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...

  3. Spring Boot2(十四):单文件上传/下载,文件批量上传

    文件上传和下载在项目中经常用到,这里主要学习SpringBoot完成单个文件上传/下载,批量文件上传的场景应用.结合mysql数据库.jpa数据层操作.thymeleaf页面模板. 一.准备 添加ma ...

  4. 阿里云OSS简单上传本地文件

    上传本地文件 # -*- coding: utf-8 -*- import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高.强烈建议您创建并使用RAM账号进行API访问 ...

  5. ThinkPHP5使用阿里云OSS图片上传

    1.下载OSS文件放在网站根目录下(OSS文件下载地址:https://gitee.com/jth1234/oss_files.git) 2.在入口文件中加载OSS 3.config文件配置oss信息 ...

  6. 阿里云OSS图片上传类

    1.阿里云基本函数 /** * 把本地变量的内容到文件 * 简单上传,上传指定变量的内存值作为object的内容 */ public function putObject($imgPath,$obje ...

  7. 阿里云oss视频上传不能在线播放,js,javascript,在线播放器,插件

    网页视频播放插件 发现阿里云oss储存,上传了视频不能在线播放. 解决方法:使用插件播放即可解决. <html> <head> <meta charset="u ...

  8. 再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件

    相信大家应该都接触过Linux操作系统(Ubuntu.Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器. 常用的ssh工具主要有:Xshell.MobaXt ...

  9. file does not exist 阿里云OSS图片上传遇到的问题

    ./uploads\20171209/0497b8dd16e72c6fcf5bfd552f535a81.png file does not exist 原代码 function aliyun($sav ...

  10. 阿里云oss如何上传一个文件夹

    最近公司在做工程项目,实现文件夹云存储上传 网上找了很久,发现很多项目都存在一些问题,但还是让我找到了一个成熟的项目. 工程: 对项目的文件夹云存储上传功能做出分析,找出文件夹上传的原理,对文件夹的云 ...

随机推荐

  1. C#简易商城收银系统v1.1简单工厂实现(2-2)

    C#简易商城收银系统v1.1简单工厂实现(2-2) 当初: C#简易商城收银系统v1.0 现在: 用之前的工厂模式对商城收银系统v1.0进行升级 可以参考之前的 C#简易商城收银系统v1.0 随笔  ...

  2. Android 13 - Media框架(30)- ACodec(六)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 前一节我们了解了input buffer写入的流程,知道了起播写前几笔数据时会先获取graphic buffer,这一节我们就一起来了解下deque ...

  3. 【C# 序列化】System.Text.Json.Nodes ---Json数据交换格式 对应C#类

    请先阅读 JSON数据交换格式 Json数据交换格式 对应C#类 System.Text.Json.Nodes:.NET 6 依微软的计划,System.Text.Json 应取代Newtonsoft ...

  4. .NET Core 项目Linux环境下生成二维码

    问题: 公司系统开发中,需要对企微授权链接进行二维码生成,然后向客户提供:当然,首当其冲想到的是使用ZXing.NET库进行实现,毕竟生成简单二维码也就那几句代码:然而,在本地环境中,一切都很正常,但 ...

  5. 莫烦tensorflow学习记录 (4)Classification 分类学习

    MNIST 数据 首先准备数据(MNIST库) from tensorflow.examples.tutorials.mnist import input_data mnist = input_dat ...

  6. VALL-EX下载介绍:只需3秒录音,即可克隆你的声音

    VALL-EX是一个强大和创新的多语言文本转语音模型,支持对中文.英文和日语的语音进行合成和克隆,使用者只需上传一段3-10秒的录音,就可以生成高质量的目标音频,同时保留了说话人的声音.情感和声学环境 ...

  7. Java求两个List集合的交集、并集、差集

    在项目中经常会求解集合的交集.并集.差集,这里做个记录.首先创建两个集合list1.list2以及添加元素. List<String> list1 = new ArrayList<& ...

  8. liquibase常用操作

    1.概述 Liquibase是一个用于跟踪.管理和应用数据库变化的开源的数据库重构工具.它将所有数据库的变化(包括结构和数据)都保存在XML文件中,便于版本控制. 本文旨在将平时工作中常用的一些操作进 ...

  9. Jmeter进行HTTPS接口压测及SSL证书验证

    一.前言 使用JMeter压测HTTPS接口比较简单,只需要预先处理SSL证书认证,后面就是压测HTTP接口的通用步骤. HTTPS连接证书来验证浏览器和WEB服务器之间的连接.通过HTTP连接时,服 ...

  10. 什么是浅拷贝和深拷贝,如何用 js 代码实现?

    〇.简介和对比 简介 浅拷贝:只复制原始对象的第一层属性值.   如果属性值是值类型,将直接复制值,本值和副本变更互不影响:   如果是引用数据类型,则复制内存地址,因此原始对象和新对象的属性指向相同 ...