阿里云 oss python3 样例

时间:2022-09-08 13:08:53

阿里云的oss SDK又是不支持python3,头疼头疼。

本想改一改它的SDK,让它支持python2+python3,无奈里面大量的代码使用不带括号的print。工作量恐怖。

幸好oss的使用很easy。我翻了翻相关文档。弄了个简单可执行的样例(python2, python3都支持),基本的代码例如以下:aliyun-oss-python3

请注意,须要填写自己的accessKeyId等相关信息

import base64

import hmac

from hashlib import sha1

import time

try:

    import urllib.request as urllib

except ImportError:

    import urllib2 as urllib





accessKeyId = 'ic20Gwxms6ynLlkx'

accessKeySecret = 'lhTBND3SHvSawihEcIL6LFz597xtMj'

bucket = 'fast-loan'

region_host =  'oss-cn-hangzhou.aliyuncs.com'





# use signature in url

def _oss_file_url(method, bucket, filename, content_type):

    now = int(time.time())

    expire = now - (now % 1800) + 3600 # expire will not different every second

    tosign = "%s\n\n\n%d\n/%s/%s" % (method, expire, bucket, filename)

    if method == 'PUT' or method == 'POST':

        tosign = "%s\n\n%s\n%d\n/%s/%s" % (method, content_type, expire, bucket, filename)

    h = hmac.new(accessKeySecret.encode(), tosign.encode(), sha1)

    sign = urllib.quote(base64.encodestring(h.digest()).strip())

    return 'http://%s.%s/%s?OSSAccessKeyId=%s&Expires=%d&Signature=%s' % (

        bucket, region_host, filename, accessKeyId, expire, sign

    )





def get_file_url(bucket, filename):

    return _oss_file_url('GET', bucket, filename, None)





def http_put(bucket, filename, cont, content_type):

    url = _oss_file_url('PUT', bucket, filename, content_type)

    req = urllib.Request(url, cont)

    req.get_method = lambda: 'PUT'

    req.add_header('content-type', content_type)

    try:

        return urllib.urlopen(req)

    except urllib.HTTPError as e:

        print(e)





http_put(bucket, 'mytestkey', b'sample value', 'text/plain')

url = get_file_url(bucket, 'mytestkey')

print(urllib.urlopen(url).read())

阿里云 oss python3 样例的更多相关文章

  1. 上传图片到阿里云OSS和获取上传图片的外网url的步骤

    啥都不说  直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" ...

  2. laravel下使用阿里云oss上传图片

    对小公司而言,使用阿里云oss比直接买硬盘要划算的多,不管从存储性价比上还是从网速负载上.最近因为公司的项目有比较大的图片存储访问需求,所以决定使用阿里云的oss. 在研究了一下以后,摆着不自己造* ...

  3. 在OneThink(ThinkPHP3&period;2&period;3)中整合阿里云OSS的PHP-SDK2&period;0&period;4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

    在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...

  4. ThinkPHP 文件上传到阿里云OSS上(干货)

    参考:http://www.thinkphp.cn/extend/789.html 1.前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-p ...

  5. Java下载https文件上传到阿里云oss服务器

    Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...

  6. 如何用云存储和CDN加速网站图片视频、阿里云OSS的使用&lpar;转&rpar;

    总有人说阿里云主机带宽小,那只是因为你还停留在单机架构上. 阿里的架构设计,云主机主要用来跑程序的,附件的存储和访问主要靠OSS. 有人又会说了,OSS按存储费+流量双重计费伤不起,只是你不知道OSS ...

  7. PHP实现阿里云OSS文件上传&lpar;支持批量&rpar;

    上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下:   1.下载阿里云OSS对象上传SDK(P ...

  8. 使用阿里云OSS上传文件

    本文介绍如何利用Java API操作阿里云OSS对象存储. 1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进 ...

  9. 备份MySQL数据库并上传到阿里云OSS存储

    1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 官网及文档: htt ...

随机推荐

  1. 应用EF访问SQLite数据

    创建项目,应用EF访问SQLite 1.创建项目 项目结构初始结构如下图所示,Netage.Data.SQLite 类库项目用于定义访问数据的接口和方法,Netage.SQLiteTest.UI 控制 ...

  2. Webservice发布出现 测试窗体只能用于来自本地计算机的请求

    今天发布了一个接口,一开始以为是.netframework版本的问题,从3.5降到2.0到服务器发布,发布后还是会出现 测试窗体只能用于来自本地计算机的请求 上网查找资料发现原来是 webconfig ...

  3. &period;NET中的注释种类,单行注释、多行注释、文档注释。。。

    注释不是给编译器看的,而是给程序员看的.是程序员之间交流的一种方式.好的程序员一定要有完善的注释. .NET注释类型. 1.单行注释  // a.当代码行比较短时,注释可以放在代码后面. b.当代码行 ...

  4. block、inline、inline-block对比

    display:block 1.block元素会独占一行,多个block元素会各种新起一行.默认情况下,block元素宽度自动填满其父元素容器: 2.block元素可以设置width和height属性 ...

  5. 港交所OMD-C对接笔记

    工作中需要对接港交所OMD-C的Standard版行情,现在把一些知识点做个笔记,供以后查阅. 「香港交易所领航星」巿场数据平台-证券市场(HKEX Orion Market Data Platfor ...

  6. MacRuby 0&period;3发布,支持Interface Builder,和创建GUI用的HotCocoa

    作者 Werner Schuster ,译者 贾晓楠 发布于 2008年9月24日 | 分享到: 微博 微信 QQ空间 LinkedIn Facebook 邮件分享 稍后阅读 我的阅读清单 现在,Ma ...

  7. decorator(修饰器)的业务应用

    decrator(修饰器)的业务应用 ES6问世的时间也不短了,而且很多时候对ES6所谓的"熟练应用"基本还停留在下面的几种api应用: const/let 箭头函数 Promis ...

  8. chrome主页篡改解决方法

    网上有一个超级细致的小白教学连接,但是发现很难找到,分享一下:https://arlenluo.github.io./2017/03/12/DefeatYourBrowser 还有一种情况是要打开 & ...

  9. 在Python脚本中调用Django环境

    import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", &quot ...

  10. mysql count group by统计条数方法

    mysql count group by统计条数方法 mysql 分组之后如何统计记录条数? gourp by 之后的 count,把group by查询结果当成一个表再count一次select c ...