update. 升级上传接口,支持按文件种类分类

This commit is contained in:
2026-04-10 12:39:23 +08:00
parent ec38651899
commit 6108dd3346
+8 -8
View File
@@ -58,24 +58,24 @@ UPLOAD_DIR = Path("media/uploads")
UPLOAD_DIR.mkdir(parents=True, exist_ok=True) UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
@router.post("/upload/") @router.post("/upload/{category}")
def upload_file(request, upload: UploadedFile = File(...)): def upload_file(request, category: str, file: UploadedFile = File(...), ):
try: try:
# 计算 md5 # 计算 md5
md5 = hashlib.md5(upload.read()).hexdigest() md5 = hashlib.md5(file.read()).hexdigest()
upload.seek(0) # 重置文件指针 file.seek(0) # 重置文件指针
ext = upload.name.split('.')[-1].lower() ext = file.name.split('.')[-1].lower()
filename = f"{md5}.{ext}" filename = f"{md5}.{ext}"
upload_dir = os.path.join(settings.MEDIA_ROOT, f"uploads/") upload_dir = os.path.join(settings.MEDIA_ROOT, f"uploads/{category}/")
os.makedirs(upload_dir, exist_ok=True) os.makedirs(upload_dir, exist_ok=True)
file_path = os.path.join(upload_dir, filename) file_path = os.path.join(upload_dir, filename)
with open(file_path, "wb") as f: with open(file_path, "wb") as f:
f.write(upload.read()) f.write(file.read())
url = f"{settings.MEDIA_URL}uploads/{datetime.today().strftime('%Y/%m/%d')}/{filename}" url = f"{settings.MEDIA_URL}uploads/{category}/{filename}"
return {"url": url} return {"url": url}
except Exception as e: except Exception as e:
logger.exception("Upload failed") logger.exception("Upload failed")