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")), )
|