阿里云的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 样例的更多相关文章
-
上传图片到阿里云OSS和获取上传图片的外网url的步骤
啥都不说 直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" ...
-
laravel下使用阿里云oss上传图片
对小公司而言,使用阿里云oss比直接买硬盘要划算的多,不管从存储性价比上还是从网速负载上.最近因为公司的项目有比较大的图片存储访问需求,所以决定使用阿里云的oss. 在研究了一下以后,摆着不自己造* ...
-
在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程
在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...
-
ThinkPHP 文件上传到阿里云OSS上(干货)
参考:http://www.thinkphp.cn/extend/789.html 1.前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-p ...
-
Java下载https文件上传到阿里云oss服务器
Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...
-
如何用云存储和CDN加速网站图片视频、阿里云OSS的使用(转)
总有人说阿里云主机带宽小,那只是因为你还停留在单机架构上. 阿里的架构设计,云主机主要用来跑程序的,附件的存储和访问主要靠OSS. 有人又会说了,OSS按存储费+流量双重计费伤不起,只是你不知道OSS ...
-
PHP实现阿里云OSS文件上传(支持批量)
上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下: 1.下载阿里云OSS对象上传SDK(P ...
-
使用阿里云OSS上传文件
本文介绍如何利用Java API操作阿里云OSS对象存储. 1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进 ...
-
备份MySQL数据库并上传到阿里云OSS存储
1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 官网及文档: htt ...
随机推荐
-
应用EF访问SQLite数据
创建项目,应用EF访问SQLite 1.创建项目 项目结构初始结构如下图所示,Netage.Data.SQLite 类库项目用于定义访问数据的接口和方法,Netage.SQLiteTest.UI 控制 ...
-
Webservice发布出现 测试窗体只能用于来自本地计算机的请求
今天发布了一个接口,一开始以为是.netframework版本的问题,从3.5降到2.0到服务器发布,发布后还是会出现 测试窗体只能用于来自本地计算机的请求 上网查找资料发现原来是 webconfig ...
-
.NET中的注释种类,单行注释、多行注释、文档注释。。。
注释不是给编译器看的,而是给程序员看的.是程序员之间交流的一种方式.好的程序员一定要有完善的注释. .NET注释类型. 1.单行注释 // a.当代码行比较短时,注释可以放在代码后面. b.当代码行 ...
-
block、inline、inline-block对比
display:block 1.block元素会独占一行,多个block元素会各种新起一行.默认情况下,block元素宽度自动填满其父元素容器: 2.block元素可以设置width和height属性 ...
-
港交所OMD-C对接笔记
工作中需要对接港交所OMD-C的Standard版行情,现在把一些知识点做个笔记,供以后查阅. 「香港交易所领航星」巿场数据平台-证券市场(HKEX Orion Market Data Platfor ...
-
MacRuby 0.3发布,支持Interface Builder,和创建GUI用的HotCocoa
作者 Werner Schuster ,译者 贾晓楠 发布于 2008年9月24日 | 分享到: 微博 微信 QQ空间 LinkedIn Facebook 邮件分享 稍后阅读 我的阅读清单 现在,Ma ...
-
decorator(修饰器)的业务应用
decrator(修饰器)的业务应用 ES6问世的时间也不短了,而且很多时候对ES6所谓的"熟练应用"基本还停留在下面的几种api应用: const/let 箭头函数 Promis ...
-
chrome主页篡改解决方法
网上有一个超级细致的小白教学连接,但是发现很难找到,分享一下:https://arlenluo.github.io./2017/03/12/DefeatYourBrowser 还有一种情况是要打开 & ...
-
在Python脚本中调用Django环境
import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", " ...
-
mysql count group by统计条数方法
mysql count group by统计条数方法 mysql 分组之后如何统计记录条数? gourp by 之后的 count,把group by查询结果当成一个表再count一次select c ...