Files
sixGuoDjango/第三方工具目录/腾讯云.py
T

131 lines
4.6 KiB
Python
Raw Normal View History

2026-08-02 14:07:04 +08:00
# 预先定义共享的 CosConfig 实例 需要安装的包为 pip install cos-python-sdk-v5
import os
import django
from sixGuoDjango.settings import BASE_DIR
os.environ.setdefault(key="DJANGO_SETTINGS_MODULE", value=f"{BASE_DIR.name}.settings")
django.setup()
import io
from pathlib import Path
import jmespath
import pydash
from qcloud_cos import CosConfig, CosS3Client
default_config = CosS3Client(
CosConfig(
Region="ap-nanjing", SecretId="AKID5FE1e4SjPvFLvLNEvRm8KJ5h86sRXR9e",
2026-09-19 11:51:34 +08:00
SecretKey="NWTFoDUaWHvOhrriMo4FG7pOmxwxpY7V", Token=None, Scheme="https", Domain="hudie.xiao.band"),
2026-08-02 14:07:04 +08:00
)
class oss上传腾讯云图片:
"""
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
"""
# key: str
# Bucket: str = "sixgou-1320557642" # 腾讯云配置(元宝)
Bucket: str = "six-1407732583" # 蝴蝶云配置
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
client: CosS3Client = default_config
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
@classmethod
def 上传图片(cls, key: str, file, ):
"""
:param key: 目录名称
:param file: 文件的bytes类型文件
"""
response = cls.client.upload_file_from_buffer(Bucket=cls.Bucket, Key=key,
2026-09-19 11:51:34 +08:00
Body=file, ) # Body: 文件的 bytes 类型数据 必须要是一个可以调用read()方法的对象
print(response)
2026-08-02 14:07:04 +08:00
data = cls.批量查询图片链接(Key=key)
src = pydash.get(obj=data, path="src")
# print( src )
return src
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
@classmethod
def update本地图片文件(cls, key: str, filename: str, path_name: Path):
"""
:return:
"""
Key = f"six/{key}"
response = cls.client.upload_file(
Bucket=cls.Bucket, # Bucket: 指定存储桶的名称,这里是 "six-1320557642"
Key=Key, # Key: 指定文件在存储桶中的路径和名称,这里是 'six/img.jpg'
LocalFilePath=path_name, # LocalFilePath: 指定本地要上传的文件路径,这里是 "img.jpg"
EnableMD5=False, # EnableMD5: 是否启用 MD5 校验,False 表示不启用
progress_callback=None, # progress_callback: 上传进度回调函数,None 表示不使用回调函数
)
cls.批量查询图片链接(Key=Key)
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
@classmethod
def 批量查询图片链接(cls, Key):
"""
:return:
"""
url = cls.client.get_object_url(Bucket=cls.Bucket, Key=Key, )
data = {"type": "image", "src": url, }
return data
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
@classmethod
def 处理用户头像(cls, content: bytes, name: str):
""""""
image = io.BytesIO(content)
Key = f"six/app应用/用户头像/{name}.png"
print(Key)
response = cls.client.upload_file_from_buffer(Bucket=cls.Bucket, Key=Key,
2026-09-19 11:51:34 +08:00
Body=image, ) # Body: 文件的 bytes 类型数据 必须要是一个可以调用read()方法的对象
2026-08-02 14:07:04 +08:00
img_response = cls.批量查询图片链接(Key=Key)
src = jmespath.search(data=img_response, expression="src", )
return src
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
@classmethod
def 删除图片(cls):
data = cls.client.delete_object(Bucket=cls.Bucket, Key="六果项目/app/加.png")
print(data)
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
@classmethod
def xiaozizi(cls):
data = cls.client.delete_object(Bucket=cls.Bucket, Key="zizi/")
print(data)
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
@classmethod
def 删除目录(cls):
pass
data_img_list = cls.client.list_objects(Bucket=cls.Bucket, Prefix="zizi", )
# 从icon这个目录中, 获取所有的 子元素(图片) 信息
Contents = jmespath.search(data=data_img_list, expression="Contents")
# 取出所有的图片 信息
for img in Contents:
# 循环, 操作
Key = jmespath.search(data=img, expression="Key")
print(Key)
# 删除
res = cls.client.delete_object(Bucket=cls.Bucket, Key=Key)
print(res)
2026-09-19 11:51:34 +08:00
2026-08-02 14:07:04 +08:00
@classmethod
def 查询所有的图片(cls):
pass
data = cls.client.list_objects(Bucket=cls.Bucket, Prefix="元宝零售", )
print(data)
Contents = jmespath.search(data=data, expression="Contents")
for img in Contents:
Key = jmespath.search(data=img, expression="Key")
print(Key)
if __name__ == "__main__":
pass
2026-09-19 11:51:34 +08:00
fileImg = Path("../django_static_directory/media/扫描 4.png").resolve()
2026-08-02 14:07:04 +08:00
print(fileImg)
print(fileImg.name)
# default_storage.save(name=fileImg.name, content=fileImg.open(mode="rb"))
2026-09-19 11:51:34 +08:00
fileImgFile = open(file=fileImg, mode="rb")
2026-08-02 14:07:04 +08:00
# oss上传腾讯云图片.删除图片()
2026-09-19 11:51:34 +08:00
# print(oss上传腾讯云图片.上传图片(key=f"/demo/{fileImg.name}", file=fileImg.open(mode="rb")), )