最近在搞一些全栈的小项目, 涉及到图片的上传, 删改等操作, 想着还是用这个云服务器来整一波, 阿里云的 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的更多相关文章

  1. 阿里云OSS 上传文件SDK

    Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...

  2. vue实现图片的上传和删除

    目录 1 UI库使用ElementUI 2 后端使用Express + formidable模块 1 UI库使用ElementUI 安装ElementUI $ npm install --save-d ...

  3. TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片

    **TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片首先我们来看看淘宝的功能和样式:** 之后看看制作完成的演示:(由于全部功能弄成GIF有点大,限制上传大小好像在1M之内,压缩之后也有1.9 ...

  4. 微信开发中使用微信JSSDK和使用URL.createObjectURL上传预览图片的不同处理对比

    在做微信公众号或者企业微信开发业务应用的时候,我们常常会涉及到图片预览.上传等的处理,往往业务需求不止一张图片,因此相对来说,需要考虑的全面一些,用户还需要对图片进行预览和相应的处理,在开始的时候我使 ...

  5. uniapp使用阿里oss上传

    可以删除重新上传,点击图片大图等功能. <view class="uploadView"> <view class="imageView" v ...

  6. 基于SqlSugar的开发框架循序渐进介绍(26)-- 实现本地上传、FTP上传、阿里云OSS上传三者合一处理

    在前面介绍的随笔<基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式[Options]处理常规上传和FTP文件上传>中介绍过在文件上传处理的过程中,整合了本 ...

  7. dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

    http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...

  8. DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

    DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库. 它是轻量级的,不依赖任何其他类库(如JQuery)并且高度可定制. 试试看! 将文件拖至此处或点击上传.(这仅仅是 dropzo ...

  9. bootstrap-fileinput上传文件的插件使用总结----编辑已成功上传过的图片

    http://plugins.krajee.com/file-plugin-methods-demo 具体操作 http://plugins.krajee.com/file-preview-manag ...

  10. 图片上传5-多个图片上传,独立项目Demo和源码

    图片上传,一次性可以上传多个图片,每个图片可以有名字.URL.排序.备注等字段.这是区别于使用百度WebUploader等多图上传工具的地方. 项目相关图片 Jar包管理:Maven用到的框架:Spr ...

随机推荐

  1. 用python做时间序列预测八:Granger causality test(格兰杰因果检验)

    如果想知道一个序列是否对预测另一个序列有用,可以用Granger causality test(格兰杰因果检验). Granger causality test的思想 如果使用时间序列X和Y的历史值来 ...

  2. mysql常用优化

    SQL优化是一个分析,优化,再分析,再优化的过程.站在执行计划的角度来说,我们这个过程,就是在不断的减少rows的数量. 1.建索引 2.减少表之间的关联 3.优化 sql,尽量让 sql 很快定位数 ...

  3. Docker安装mongoDB及使用教程

    一.mongoDB是什么? MongoDB是一个NoSQL的非关系型数据库 ,支持海量数据存储,高性能的读写. mongoDB的特点(或使用场景) 1.支持存储海量数据:(例如:直播中的打赏数据): ...

  4. 读论文-序列感知推荐系统(Sequence-Aware Recommender Systems)

    前言 今天读的论文为一篇于2018年发表在(ACM computing surveys (CSUR))的论文,这篇文章主要讲述了序列感知推荐系统(Sequence-Aware Recommender ...

  5. Netty基础—2.网络编程基础二

    大纲 1.网络编程简介 2.BIO网络编程 3.AIO网络编程 4.NIO网络编程之Buffer 5.NIO网络编程之实战 6.NIO网络编程之Reactor模式 1.网络编程简介 既然是通信,那么肯 ...

  6. 【Bug记录】Powershell 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 - PowerShell 执行策略

    Powershell 无法将"vue"项识别为 cmdlet.函数.脚本文件或可运行程序的名称 造成该问题主要是 PowerShell 执行策略,不支持执行全局脚本和程序的运行. ...

  7. 在B站刷学习视频时如何知道剩余分集视频总时长?

    在B站刷学习视频时如何知道剩余分集视频总时长? 转载于:bilibili笔记 作者:丶whimmy 前言 最近在B站刷黑马的前端视频课.然而每次看视频都不知道还剩多少时长,制定计划时都很苦恼. 多达4 ...

  8. Delphi WebBrowser内核版本修改D7

    private { Private declarations } public { Public declarations } function WriteAppNameToReg:Boolean; ...

  9. ArrayList的常用成员方法

    1.ArrayList常用成员方法 可以大致分为4种,增 删 改 查 1.增 1.public boolean add(E e) 将括号里的元素直接添加到集合中,添加的元素按照顺序依次排列. 其中,E ...

  10. 【WinForm】使用选择文件的窗口样式选择文件夹

    使用选择文件的窗口样式选择文件夹 零.需求 传统的选择文件夹的方式太小了,不好操作,不过选择文件的方式倒是挺不错的,能不能把选择文件夹的方式改为选择文件这种样式呢? 选择文件夹 选择文件 壹.解决 1 ...