Files
aiagent/saars/backend/app/api/files.py

26 lines
924 B
Python
Raw Normal View History

2026-03-07 09:01:00 +08:00
"""
File upload API: images and documents, max 10MB.
"""
import os
from flask import Blueprint, request, jsonify, current_app
from flask_jwt_extended import jwt_required, get_jwt_identity
from app.services.file_service import FileService
files_bp = Blueprint("files", __name__)
@files_bp.route("/upload", methods=["POST"])
@jwt_required()
def upload():
if "file" not in request.files:
return jsonify({"error": "No file part"}), 400
file = request.files["file"]
subdir = request.form.get("subdir", "uploads")
result = FileService.save_upload(file, subdir=subdir)
if not result:
return jsonify({"error": "Invalid file or exceeds 10MB"}), 400
relative_path, _ = result
base_url = current_app.config.get("FILE_BASE_URL", "").rstrip("/")
url = f"{base_url}/{relative_path}" if base_url else f"/files/{relative_path}"
return jsonify({"url": url, "path": relative_path}), 201