""" 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