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)
OSS 上传和删除图片 Python SDK的更多相关文章
- 阿里云OSS 上传文件SDK
Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...
- vue实现图片的上传和删除
目录 1 UI库使用ElementUI 2 后端使用Express + formidable模块 1 UI库使用ElementUI 安装ElementUI $ npm install --save-d ...
- TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
**TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片首先我们来看看淘宝的功能和样式:** 之后看看制作完成的演示:(由于全部功能弄成GIF有点大,限制上传大小好像在1M之内,压缩之后也有1.9 ...
- 微信开发中使用微信JSSDK和使用URL.createObjectURL上传预览图片的不同处理对比
在做微信公众号或者企业微信开发业务应用的时候,我们常常会涉及到图片预览.上传等的处理,往往业务需求不止一张图片,因此相对来说,需要考虑的全面一些,用户还需要对图片进行预览和相应的处理,在开始的时候我使 ...
- uniapp使用阿里oss上传
可以删除重新上传,点击图片大图等功能. <view class="uploadView"> <view class="imageView" v ...
- 基于SqlSugar的开发框架循序渐进介绍(26)-- 实现本地上传、FTP上传、阿里云OSS上传三者合一处理
在前面介绍的随笔<基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式[Options]处理常规上传和FTP文件上传>中介绍过在文件上传处理的过程中,整合了本 ...
- dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...
- DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库. 它是轻量级的,不依赖任何其他类库(如JQuery)并且高度可定制. 试试看! 将文件拖至此处或点击上传.(这仅仅是 dropzo ...
- bootstrap-fileinput上传文件的插件使用总结----编辑已成功上传过的图片
http://plugins.krajee.com/file-plugin-methods-demo 具体操作 http://plugins.krajee.com/file-preview-manag ...
- 图片上传5-多个图片上传,独立项目Demo和源码
图片上传,一次性可以上传多个图片,每个图片可以有名字.URL.排序.备注等字段.这是区别于使用百度WebUploader等多图上传工具的地方. 项目相关图片 Jar包管理:Maven用到的框架:Spr ...
随机推荐
- [Ynoi2015] 我回来了 题解
\(NOIP\) 考前祈福. 实际上,每种伤害 \(d\) 打出的亵渎次数可以转化为: \[1+\max\limits_{i=0}^{\lceil\frac{n}{d}\rceil}(i[\sum\l ...
- mybatis mysql count(*) 返回结果为null的解决
具体错误信息: org.apache.ibatis.binding.BindingException: Mapper method 'com.xx.xx.xx.xx.xx.getCount attem ...
- 【由技及道】在wsl容器中进行远程java开发【人工智障AI2077的开发日志003】
指令接收:「需要万能开发环境」 系统警报:检测到主人即将陷入"环境配置地狱" 启动救赎协议:构建量子化开发容器 终极目标:让"在我机器上能跑"成为历史文物 需求 ...
- redmine 127访问成功,其他机器不能访问
添加防火墙 入站规则
- excel 文件提示已受损 解决方案
1.打开office excel 2.python 语言save 方法导致,将后缀改为.xls 3.用WPS打开
- Cordova基本使用(三)
2021-10-10 Action 过了很久又需要打包了,今天补充下之前没有记录的一个问题:Android解决禁止使用http协议,如何解决 解决方法: Android解决禁止使用http协议的方案 ...
- nginx 部署vue http、https
nignx配置文件 server { listen 80; server_name your_domain.com; return 301 https://$server_name$request_u ...
- Linux升级openssl、openssh
在项目中,我们经常会发现Linux系统中Open SSH.Open SSL存在高危漏洞,如OpenSSL"心脏出血"漏洞,利用该漏洞,黑客可以获取约30%的https开头网址的 ...
- Portainer安装配置
什么是portainer 官网:https://www.portainer.io/ Portainer(基于 Go) 是一个轻量级的Web管理界面,可让您轻松管理 Docker 主机 或 Swarm ...
- 如何让tcxGrid左边显示序号
第一步: 设置cxgrid的属性, OptionsView.Indicator = True 第二步: 写OnCustomDrawIndicatorCell方法 procedure TForm1.cx ...