1 背景
我这边使用oss是因为python+selenium自动化测试框架用到了一个注册账号获取验证码的接口(框架调通后再分享),然后这个鬼接口不支持直接上传验证码图片,必须把图片挂到外网上,然后建议用oss,我才找的阿里云oss
另外网上查的阿里云oss上传的具体示例代码都写得很模糊,我也是很忧伤的试了好多次才知道具体应该怎么弄,下面就详细的介绍一下吧!
另外马克一下官方帮助文档:https://help.aliyun.com/document_detail/32026.html?spm=a2c4g.11186623.2.10.551c15cdpfUSev#concept-32026-zh
2 阿里云oss注册和准备
注册一个个人的阿里云账号,实名认证,这部分就像买火车票一样按他们的步骤来就可以了,我主要说一下需要设置的东西,开通的阿里云oss控制台长这样
2.1 弄一个bucket
上传文件的时候代码里要用,这个bucket名称看起来就像域名一样是不能和别人重名的
另外注意那个endpoint也是上传代码要用的,查了一下是和选择的地域有关的
2.2 文件上传路径
创建bucket之后,可以从控制台进去看文件了,创建一个文件目录,我这里是在根目录下面弄了一个“python”,这个目录也是上传代码要用的
3 python上传代码
代码如下,我再说一下参数在哪里
access_key_id = 'LTA*******************'
access_key_secret = 'ZAx*******************************'
bucket_name = 'wangwy'
endpoint = 'oss-cn-beijing.aliyuncs.com'
# 创建对象
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
# 上传
with open(file_name, "rb") as f:
data = f.read()
bucket.put_object('python/captcha_num.png', data) # data为数据,可以是图片
fileurl = bucket.sign_url('GET', 'python/captcha_num.png', 60 * 60 * 24) # 返回值为链接,参数依次为,方法/oss上文件路径/过期时间(s)
3.1 安装包 oss2
pip install oss2
3.1 参数access_key_id /access_key_secret
获取id和密钥的地方再个人中心,下图这里
3.2 参数bucket_name /endpoint
就是上面创建的bucket,已经创建完的可以在下面找到,圈出来的就是bucket_name和endpoint
3.3 bucket.put_object/sign_url的参数key
这两个都是oss中对应的文件路径+文件名,注意不需要从“/”开始,另外要和bucket对应
4 实现效果
上传成功后,程序获得的链接长这样(也就是返回了文件的外网地址)
阿里云oss后台长这样