阿里云的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.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 ...

  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的使用(转)

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

  7. PHP实现阿里云OSS文件上传(支持批量)

    上传文件至阿里云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. (hdu1007)Quoit Design,求最近点对

    Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...

  2. 【BZOJ 1027】 (凸包+floyd求最小环)

    [题意] 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金 ...

  3. [Codeforces #210] Tutorial

    Link: Codeforces #210 传送门 A: 贪心,对每个值都取最大值,不会有其他解使答案变优 #include <bits/stdc++.h> using namespace ...

  4. 【BFS】Tester Program

    [poj1024]Tester Program Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2760   Accepted ...

  5. 【Trie】【kd-tree】计蒜客17122 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 I. Barty's Computer

    题意:2种操作:①往集合里添加一个串 ②给你四个小串a b c d,问你集合里有几个串S满足S=a+S1+b+c+S2+d的形式.S1 S2可以为空,并且a+S1+b=c+S2+d. 就搞四颗Trie ...

  6. 【线段树区间合并】POJ3667-Hotel

    [题意] 一段区间初始均为可行.有两个操作: 1→找出长度为w的一段可行区间,如果存在则返回这个可行区间最靠左的情况,并将该区间设为不可行: 2→将区间[a,b]设为可行区间. [思路] 经典的线段树 ...

  7. python3-开发进阶Django中序列化以及rest_framework的序列化

    一.django框架的序列化 直接上代码 1.这是app下的models.py from django.db import models # Create your models here. clas ...

  8. Codeforces Gym 100269K Kids in a Friendly Class 构造题

    Kids in a Friendly Class 题目连接: http://codeforces.com/gym/100269/attachments Description Kevin resemb ...

  9. Maven命名规范收集

    一.基本命名规范: groupId:定义当前Maven项目隶属的实际项目,例如org.sonatype.nexus,此id前半部分org.sonatype代表此项目隶属的组织或公司,后部分代表项目的名 ...

  10. Eclipse环境安装C/C++插件CDT和Eclipse安装的插件卸载(删除)

    http://blog.csdn.net/typa01_kk/article/details/49252513