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)
|
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")
|
||||||
|
|||||||
Reference in New Issue
Block a user