diff --git a/base/views.py b/base/views.py index 51d13aa..796fde9 100644 --- a/base/views.py +++ b/base/views.py @@ -58,24 +58,24 @@ UPLOAD_DIR = Path("media/uploads") UPLOAD_DIR.mkdir(parents=True, exist_ok=True) -@router.post("/upload/") -def upload_file(request, upload: UploadedFile = File(...)): +@router.post("/upload/{category}") +def upload_file(request, category: str, file: UploadedFile = File(...), ): try: # 计算 md5 - md5 = hashlib.md5(upload.read()).hexdigest() - upload.seek(0) # 重置文件指针 + md5 = hashlib.md5(file.read()).hexdigest() + file.seek(0) # 重置文件指针 - ext = upload.name.split('.')[-1].lower() + ext = file.name.split('.')[-1].lower() 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) file_path = os.path.join(upload_dir, filename) 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} except Exception as e: logger.exception("Upload failed")