# app/blueprints/upload.py """ 파일 업로드 블루프린트 역할: - 파일 업로드 처리 - 업로드 UI 제공 """ from flask import Blueprint, render_template, request, jsonify import sys import os sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) from app.file_processor import FileProcessor upload_bp = Blueprint('upload', __name__, url_prefix='/api/upload') def get_file_processor(upload_folder): """파일 프로세서 인스턴스 반환""" return FileProcessor(upload_folder) @upload_bp.route('/') def index(): """파일 업로드 페이지""" return render_template('upload.html') @upload_bp.route('', methods=['POST']) def upload_files(): """ 파일 업로드 처리 요청: files: MultiDict[FileStorage] - 업로드된 파일들 응답: { 'success': bool, 'message': str, 'files': List[dict], 'errors': List[dict] } """ try: if 'files' not in request.files: return jsonify({ 'success': False, 'message': '업로드된 파일이 없습니다.', 'files': [], 'errors': [] }), 400 uploaded_files = request.files.getlist('files') if len(uploaded_files) == 0: return jsonify({ 'success': False, 'message': '파일을 선택하세요.', 'files': [], 'errors': [] }), 400 # 업로드 폴더 경로 upload_folder = os.path.join(os.path.dirname(__file__), '..', '..', 'uploads') os.makedirs(upload_folder, exist_ok=True) # 파일 처리 file_processor = get_file_processor(upload_folder) results = file_processor.process_uploads(uploaded_files) return jsonify(results) except Exception as e: return jsonify({ 'success': False, 'message': f'업로드 처리 중 오류: {str(e)}', 'files': [], 'errors': [str(e)] }), 500