Files
chat-bot/api/file.py
lychang 64ce30fdfd init
2025-08-26 09:35:29 +08:00

41 lines
1.5 KiB
Python

import base64
from sys import prefix
from fastapi import File, UploadFile
from extension.standard import chat_file_manager
import json
from api.base import set_logger_config, response, app
@app.post("/api/file/upload")
@set_logger_config("/api/file/upload")
def upload_file(file: UploadFile = File(...)):
try:
file_name = file.filename
file_content = file.file.read()
file_id = chat_file_manager.c_create(file_name, file_content)
file.file.close()
if not file_id:
return response(status_code=500)
result = json.dumps({"file_id": file_id}, ensure_ascii=False).encode("utf-8")
return response(result, 200, {'Content-Type': 'application/json'})
except Exception as e:
return response(status_code=500)
@app.get("/api/file/download/{file_id}")
@set_logger_config("/api/file/download/{file_id}")
def download_file(file_id: str):
try:
content_type = "application/octet-stream"
file_content, postfix = chat_file_manager.c_get(file_id)
if postfix:
content_type = chat_file_manager.extension_mapping.get(postfix, "application/octet-stream")
return response(file_content, 200, {'Content-Type': content_type,
"Content-Disposition": f"attachment; filename={file_id}{postfix}"})
except FileNotFoundError:
return response(status_code=404)
except Exception as e:
return response(status_code=500)