一、准备工作
- 首先大家要购买一个腾讯云或者阿里云的轻量级服务器,由于我的服务器来自腾讯云,接下来的演示就根据腾讯云的步骤开始。阿里云步骤类似。
- 登录你的腾讯云账号,在控制台中找到对象储存服务,进去后找到对应存储桶列表中新建存储桶。
- 然后我们要生成密钥,进入控制台搜索访问管理,点击访问密钥下面的API密钥管理,新建一个密钥。
二、使用
环境依赖 对象存储的 XML Python SDK 目前可以支持 Python 2.7 以及 Python 3.4 及以上。
说明: 关于文章中出现的 SecretId、SecretKey、Bucket、Region 等名称的含义和获取方式请参见 COS 术语信息。
安装 SDK 安装 SDK 有三种安装方式:pip 安装、手动安装和离线安装。
使用 pip 安装(推荐)
pip install -U cos-python-sdk-v5
手动安装 从 XML Python SDK 下载源码,通过 setup 手动安装,执行以下命令:
python setup.py install
离线安装
在有外网的机器下运行如下命令
mkdir cos-python-sdk-packages
pip download cos-python-sdk-v5 -d cos-python-sdk-packages
tar -czvf cos-python-sdk-packages.tar.gz cos-python-sdk-packages
将安装包拷贝到没有外网的机器后运行如下命令 请确保两台机器的 python 版本保持一致,否则会出现安装失败的情况
tar -xzvf cos-python-sdk-packages.tar.gz
pip install cos-python-sdk-v5 --no-index -f cos-python-sdk-packages
开始使用 下面为您介绍如何使用 COS Python SDK 完成一个基础操作,例如初始化客户端、创建存储桶、查询存储桶列表、上传对象、查询对象列表、下载对象和删除对象。
腾讯云配置文件总览
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import logging
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
secret_id = ''
secret_key = ''
region = 'ap-beijing'
token = None
scheme = 'https'
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)
"""上传文件至腾讯云接口"""
def upload(localFilePath, title):
response = client.put_object(
Bucket='',
Body=localFilePath,
Key='picture.jpg'+title,
EnableMD5=False,
)
1.初始化
下面介绍几种初始化 Python SDK Client 的方式,您可以根据具体场景选择其中一种。 通过 COS 默认域名初始化(默认方式) 通过 COS 默认域名初始化 Client,需要传入region名称,SDK会以{bucket-appid}.cos.{region}.myqcloud.com的域名形式访问COS。
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import logging
正常情况日志级别使用INFO,需要定位时可以修改为DEBUG,此时SDK会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
1. 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在CosConfig中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = 'SecretId'
secret_key = 'SecretKey'
region = 'ap-beijing'
token = None
scheme = 'https'
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
2. 获取客户端对象
client = CosS3Client(config)
注意: 正常情况下一个 region 只需要生成一个 CosS3Client 实例,然后循环上传或下载对象,不能每次访问都生成 CosS3Client 实例,否则 python 进程会占用过多的连接和线程。
说明: 关于临时密钥如何生成和使用,请参见 临时密钥生成及使用指引。
3.接口的使用
"""上传文件至腾讯云接口"""
def upload(localFilePath, title):
response = client.put_object(
Bucket='interview-1308216014',
Body=localFilePath,
Key='picture.jpg'+title,
EnableMD5=False,
)
4.其他部分的操作
其他部分的操作在此不再一一赘述,大家可以自行操作。如url,view,制作前端文件上传的页面等。
以下是一个简易的视图函数,要在其中使用前面文件中定义的upload()函数
def post(self, request):
try:
content = request.POST['content']
title = request.POST['title']
time = request.POST['time']
photo = request.FILES.get('file')
print(content)
announcement = announcementSerializer(
data={'content': content, 'title': title, 'time': time, 'photo': photo})
if announcement.is_valid():
announcement.save()
upload.upload(photo, title)
print('图片上传成功')
return JsonResponse({'msg': '公告发布成功'}, status=200)
else:
return JsonResponse({'msg': '发布失败,您的输入不合理'}, status=401)
except:
return JsonResponse({'msg': '发布失败,您的输入不合理'}, status=400)
这里只是上传功能的实现,如果需要实现其他功能,大家可以去腾讯云官方SDK文档中查看。官方SDK地址
三、测试
所有准备就绪。我们在表单中上传一张图片 我们在腾讯云控制后台中的存储桶中可以看到,我们有.jpg 的图片已经上传成功。
|