七牛云介绍
- 项目初期, 数据量小的情况下, 一般会采用第三方的存储方案, 成本比较低, 而且也安全可靠
- 当数据量达到一定的规模, 第三方存储的费用超过自己搭建文件服务, 才会选择搭建自己文件服务系统
- 对象存储服务 OSS
- 使用细节
- 要求实名认证
- 创建存储空间
- 默认生成测试域名 有效期为一个月 要长期使用则需要绑定自己的域名
交互过程
API封装
-安装pip install qiniu
from qiniu import Auth, put_data
def upload_file(file_data):
"""
七牛云上传
:param file_data 上传的二进制数据
:return: 文件名
"""
#需要填写你的 Access Key 和 Secret Key
access_key = 'kJ8wVO7lmFGsdvtI5M7eQDEJ1eT3Vrygb4SmR00E'
secret_key = 'rGwHyAvnlLK7rU4htRpNYzpuz0OHJKzX2O1LWTNl'
#构建鉴权对象
q = Auth(access_key, secret_key)
# 要上传的空间
bucket_name = 'info28'
# 上传后保存的文件名 如果为None 自动生成文件名(hash值)
key = None
#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)
ret, info = put_data(token, key, file_data)
# 判断请求结果
if info.status_code == 200:
return ret.get('key')
else:
raise Exception(info.error)
if __name__ == '__main__':
with open('123.jpg', 'rb') as f:
img_bytes = f.read()
file_name = upload_file(img_bytes)
print(file_name)
- 判断文件类型是否为图片
import imghdr
if __name__ == '__main__':
with open('123.jpg', 'rb') as f:
# 判断文件类型的本质是 对比文件的前几个字节
content = f.read()
# print(content)
# # 方式1 判断图片类型
# img_type = imghdr.what(f)
# if img_type:
# print('是图片类型: %s' % img_type)
# else:
# print('不是图片类型')
# 方式2 判断图片类型
img_type = imghdr.what(None, content)
if img_type:
print('是图片类型: %s' % img_type)
else:
print('不是图片类型')
接口实现‘’
# 上传头像
/v1_0/user/photo
# 请求方式
PATCH form-data
# 请求参数
photo 上传的头像文件
# 响应数据 json
{
"photo_url": "www.xx.com/123.jpg"
}
过期时间调长一些
- 虚拟机的时间和真实时间存在较大的偏差