Django——django上传文件至腾讯云、阿里云

一、准备工作

  1. 首先大家要购买一个腾讯云或者阿里云的轻量级服务器,由于我的服务器来自腾讯云,接下来的演示就根据腾讯云的步骤开始。阿里云步骤类似。
  2. 登录你的腾讯云账号,在控制台中找到对象储存服务,进去后找到对应存储桶列表中新建存储桶。
    在这里插入图片描述
  3. 然后我们要生成密钥,进入控制台搜索访问管理,点击访问密钥下面的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.com/cam/capi
secret_key = ''  # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
region = 'ap-beijing'  # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
# COS支持的所有region列表参见https://www.qcloud.com/document/product/436/6224
token = None  # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/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.com/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.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'     # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
secret_key = 'SecretKey'   # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
region = 'ap-beijing'      # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
                           # COS支持的所有region列表参见https://www.qcloud.com/document/product/436/6224
token = None               # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/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.com/tencentyun/cos-python-sdk-v5/blob/master/qcloud_cos/demo.py](https://github.com/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
的图片已经上传成功。
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hyk今天写算法了吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值