update. 升级上传接口,支持按文件种类分类
This commit is contained in:
+8
-8
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user