Django admin实现图片上传到腾讯云
官网参考:https://docs.djangoproject.com/zh-hans/3.2/howto/custom-file-storage/
当前业务需要使用django的admin后台进行数据的管理,需要实现文件的上传云端-腾讯云
具体实现:
安装依赖包:
pip install cos-python-sdk-v5==1.9.10
自定义一个存储类:
1)继承Django.core.files.storage.Storage
2)重写save方法
3)添加装饰器,方便进行数据库文件的迁移django.utils.deconstruct.deconstructible
demo:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django.conf import settings
from django.core.files.storage import Storage
from django.utils.deconstruct import deconstructible
from qcloud_cos import CosConfig, CosS3Client from .common import generate_img_url secret_id = settings.OSS_QCLOUD_SECRET_ID
secret_key = settings.OSS_QCLOUD_SECRET_KEY
region = settings.OSS_QCLOUD_REGION
bucket = settings.OSS_QCLOUD_BUCKET
token = settings.OSS_QCLOUD_TOKEN
scheme = settings.OSS_QCLOUD_SCEHME
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)
host = settings.OSS_PREFIX @deconstructible
class CosStorage(Storage): def save(self, name, content, max_length=None):
"""
重写save方法
"""
# suffix = name.split('.')[-1]
# key = self.generate_key(suffix)
key = generate_img_url(name)
try:
response = client.put_object(
Bucket=bucket,
Body=content.read(),
Key=key,
StorageClass='STANDARD',
EnableMD5=True
)
except Exception as e:
raise
return host + key def url(self, name):
return name
配置文件中需要添加配置项:
OSS_QCLOUD_SECRET_ID = 'sercret-id'
OSS_QCLOUD_SECRET_KEY = 'secret-key'
OSS_QCLOUD_REGION = '所选区域'
OSS_QCLOUD_BUCKET = '创建的bucket'
OSS_QCLOUD_TOKEN = None
OSS_QCLOUD_SCEHME = 'https'
OSS_NAMESPACE = '可以区分场景'
OSS_PREFIX = 'https://xxx.cos.所选区域.myqcloud.com'
公共方法:
# 生成图片路径
def generate_img_url(file_name, scene='default'):
file_ext = file_name.rsplit('.', 1)[-1]
new_file_name = scene + '_' + str(datetime.datetime.today()).replace('-', '').replace(' ', '_').replace(':', '') + '.' + file_ext
namespace = settings.OSS_NAMESPACE
return f'/{namespace}/' + new_file_name
最后添加到model中定义的字段中
file = models.FileField(verbose_name='文件', storage=CosStorage()) # 注意:这里使用的FileField 如果是图片的话可以使用ImageField
参考:https://www.jianshu.com/p/cb7a7f31e962
Django admin实现图片上传到腾讯云的更多相关文章
- 【POI】java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上
场景: java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上 今日份代码: 1.先是一个变量,作为文件名 private static final String ...
- 5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用
本文介绍了如何在微信小程序开发中使用腾讯官方提供的云开发功能快速实现图片的上传与存储,以及介绍云开发的 5G 存储空间的基本使用方法,这将大大提高微信小程序的开发效率,同时也是微信小程序系列教程的视频 ...
- 快速高效实现微信小程序图片上传与腾讯免费5G存储空间的使用
本文介绍了如何在微信小程序开发中使用腾讯官方提供的云开发功能快速实现图片的上传与存储,以及介绍云开发的 5G 存储空间的基本使用方法,这将大大提高微信小程序的开发效率 对于一般的图片上传功能开发,我们 ...
- VS2019 开发Django(六)------Admin中图片上传
导航:VS2019开发Django系列 该篇继续完善在Django的管理界面上传图片,因为LazyOrders小程序中菜单需要展示图片,而不是一个文本路径,所以我们还需要继续改造一下. 1)安装pil ...
- 如何把base64格式的图片上传到到阿里云oss c#版
今天碰到需要把canvas上的的图片转存到阿里云oss,于是百度了半天,一个能打的答案都没有.怒了,自己搞起. 代码超级简单,需要先引入nuget 中啊里云的oss api 1 byte[] arr ...
- k8s使用helm打包chart并上传到腾讯云TencentHub
本文只涉及Helm的Chart操作,不会对其他知识进行过多描述.至于安装这块,麻烦自行百度吧,一大堆呢. 在容器化的时代,我们很多应用都可以部署在docker,很方便,而再进一步,我们还有工具可以对d ...
- django admin后台接入tinymce并且支持图片上传
首先:下载tinymce 地址是https://www.tinymce.com/ 点击download 下载社区版本即可 接着:把压缩包内tinymce目录内的所有文件和文件夹复制到Django项目中 ...
- Django配置图片上传
本文首先实现django中上传图片的过程,然后解决富文本编辑器文件上传的问题. 一. 上传图片 1.在 settings.py 中配置MEDIA_URL 和 MEDIA_ROOT 在 D:\blog ...
- Django文件上传【单个/多个图片上传】
准备工作 python:3.6.8 django:2.2.1 新建django项目 确定项目名称.使用的虚拟环境[当然这个也可以后期修改].app的名称 创建成功,选择在新的窗口中打开 图片上传 修改 ...
- Django(十九)文件上传:图片上传(后台上传、自定义上传)、
一.基本设置 参考:https://docs.djangoproject.com/zh-hans/3.0/topics/http/file-uploads/ 1)配置project1/settings ...
随机推荐
- 把dataframe 一列转成 array
把dataframe 一列转成 array
- 深入理解c语言指针与内存
一.将int强制转换为int指针,将int指针强转换为int void f(void) { int *p = (int*)100; //将int强制转换为int指针 printf("%d\n ...
- 使用gin实现简单的注册和登录功能
一.前言 使用了gorm操作数据库,后端基于gin框架,只是一个简单的注册和登录与数据库交互的后端实现例子. 二.目录结构 -templates --regist.html --login.html ...
- HTML / CSS – Email Marketing HTML Template
前言 虽然现在的 Email Client 有在进步, 但是比起 browser 还是差太远了. 假如你用 HTML5 + CSS3 的方式去写 Email Template 的话是不行的. 这篇特地 ...
- MyBatis——案例——查询-查询详情
查询-查询详情 (根据id获取商品全部信息(即商品对象)) 1.编写Mapper接口方法:Brand selectById(int id); 2.编写SQL ...
- Material Design In XAML Toolkit 5.0.0 Migration Guide
MaterialDesignInXamlToolkit 5.0有破坏性的更新,下面的连接可以用于4.x升级到5.0的一个手册.仅供参考,欢迎升级5.0时使用. https://github.com/M ...
- Nuxt.js 应用中的 link:prefetch 钩子详解
title: Nuxt.js 应用中的 link:prefetch 钩子详解 date: 2024/10/7 updated: 2024/10/7 author: cmdragon excerpt: ...
- PC软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
前言 国庆假期各种活动比较多,直到上班才有时间来更新文章~ 不过这两天我还是做了个小玩意(Clipify),起因是想给之前开发来自己用的简单视频剪辑工具 QuickCutSharp 加个功能,不过这个 ...
- vue前端开发仿钉图系列(5)右侧编辑页面的开发详解
右侧编辑页面主要有两个入口,一是添加marker或者线面双击结束的时候,新建数据信息:二是点击底部数据的单元行或者查看编辑或者点击地图上的marker以及线面,编辑相关数据.整理总结不易,如需全部代码 ...
- KubeSphere 社区双周报| 2024.08.02-08.15
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...