File size: 2,651 Bytes
157a73d
bfd5b9c
 
23db19f
bc77853
a584bd9
 
 
157a73d
 
 
 
 
 
23db19f
 
 
 
157a73d
5f155f4
6c11ffb
7412af9
 
008767a
6c11ffb
008767a
 
e5e74f7
157a73d
 
 
 
045a9fb
157a73d
7412af9
e5e74f7
bfd5b9c
157a73d
23db19f
bfd5b9c
157a73d
 
 
bc77853
 
 
 
a584bd9
7412af9
a584bd9
157a73d
 
 
 
 
a584bd9
bfd5b9c
 
157a73d
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from flask import Flask, request, jsonify, url_for, send_from_directory
import os
from datetime import datetime
import logging
import traceback

app = Flask(__name__)

# Настройка папки для загрузки изображений
app.config['UPLOAD_FOLDER'] = 'static/images'

# Настройка логирования
logging.basicConfig(level=logging.DEBUG)

handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
app.logger.addHandler(handler)

# Главный маршрут, теперь принимающий POST-запросы
@app.route('/', methods=['POST'])
def process_image():
    data = request.json  # Получаем JSON из запроса
    if data and "image" in data:
        image_data_str = data["image"]
        try:
            # Преобразуем строку с двоичными данными в байты
            image_data = bytes(image_data_str, 'utf-8')

            # Генерируем уникальное имя файла для сохранения изображения
            timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
            filename = f'image_{timestamp}.png'
            filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)

            # Сохраняем изображение
            with open(filepath, 'wb') as f:
                f.write(image_data)

            # Генерируем URL для доступа к изображению
            image_url = url_for('uploaded_file', filename=filename, _external=True)

            # Отправляем ответ с URL изображения
            return jsonify({"image_url": image_url})
        except Exception as e:
            # Выводим подробную информацию об ошибке
            error_info = traceback.format_exc()
            app.logger.error('An error occurred: %s', error_info)
            return jsonify({"error": "An error occurred while processing the image", "info": error_info}), 500
    else:
        return jsonify({"error": "No image data provided"}), 400

# Отдача статических файлов (изображений)
@app.route('/static/images/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

if __name__ == '__main__':
    # Убедитесь, что папка для загрузки существует
    os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
    
    # Запуск Flask-приложения с включенным режимом отладки
    app.run(host='0.0.0.0', port=7860, debug=True)