/
AlexeyS_AS
/
Gerber-TEST
Обзор
Документация
Войти
/
AlexeyS_AS
/
Gerber-TEST
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
python/app.py
62 строки
2 KB
Alexey Karizhenskiy
Прочие правки..
13 апр 2025, 12:31
13 апр 2025, 12:31
b549671
Код
Авторство
О чём код?
from flask import Flask, jsonify, request, render_template import gabarit import os import zipfile import json from werkzeug.utils import secure_filename app = Flask(__name__) UPLOAD_FOLDER = '/app/uploads' ALLOWED_EXTENSIONS = {'zip'} app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS @app.route('/') def main(): return render_template('index.html') @app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return jsonify({'error': 'Файл не был загружен'}), 400 file = request.files['file'] if file.filename == '': return jsonify({'error': 'Файл не выбран'}), 400 if file and allowed_file(file.filename): filename = secure_filename(file.filename) filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(filepath) # Распаковка архива extract_path = os.path.join(app.config['UPLOAD_FOLDER'], 'extracted') os.makedirs(extract_path, exist_ok=True) with zipfile.ZipFile(filepath, 'r') as zip_ref: zip_ref.extractall(extract_path) # Обработка файлов results = gabarit.gabaritp(extract_path) # Нахождение максимального размера max_size = {'width': 0, 'height': 0} if isinstance(results, list): for result in results: if 'size' in result: width, height = result['size'] max_size['width'] = max(max_size['width'], width) max_size['height'] = max(max_size['height'], height) # Преобразование результатов в JSON results_json = json.dumps(results, ensure_ascii=False) return render_template('results.html', results=results_json, max_size=max_size) return jsonify({'error': 'Недопустимый формат файла'}), 400 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)