admin管理员组文章数量:1666532
文章目录
- 一、准备工作
- 二、使用
- 腾讯云配置文件总览
- 1.初始化
- 2. 获取客户端对象
- 3.接口的使用
- 4.其他部分的操作
- 三、测试
一、准备工作
- 首先大家要购买一个腾讯云或者阿里云的轻量级服务器,由于我的服务器来自腾讯云,接下来的演示就根据腾讯云的步骤开始。阿里云步骤类似。
- 登录你的腾讯云账号,在控制台中找到对象储存服务,进去后找到对应存储桶列表中新建存储桶。
- 然后我们要生成密钥,进入控制台搜索访问管理,点击访问密钥下面的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
# 正常情况日志级别使用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,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent/cam/capi
secret_key = '' # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent/cam/capi
region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent/cos5/bucket
# COS支持的所有region列表参见https://www.qcloud/document/product/436/6224
token = None # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent/document/product/436/14048
scheme = 'https' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
# 2. 获取客户端对象
client = CosS3Client(config)
# 参照下文的描述。或者参照 Demo 程序,详见 https://github/tencentyun/cos-python-sdk-v5/blob/master/qcloud_cos/demo.py
"""上传文件至腾讯云接口"""
# 自定义
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的域名形式访问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' # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent/cam/capi
secret_key = 'SecretKey' # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent/cam/capi
region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent/cos5/bucket
# COS支持的所有region列表参见https://www.qcloud/document/product/436/6224
token = None # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent/document/product/436/14048
scheme = 'https' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
2. 获取客户端对象
client = CosS3Client(config)#参照下文的描述。或者参照 Demo 程序,详见 [https://github/tencentyun/cos-python-sdk-v5/blob/master/qcloud_cos/demo.py](https://github/tencentyun/cos-python-sdk-v5/blob/master/qcloud_cos/demo.py)
注意:
正常情况下一个 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
的图片已经上传成功。
版权声明:本文标题:Django——django上传文件至腾讯云、阿里云 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1730064708a1221266.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论