Rooni commited on
Commit
157a73d
·
verified ·
1 Parent(s): 5f155f4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -17
app.py CHANGED
@@ -1,38 +1,56 @@
1
- from flask import Flask, request, jsonify, url_for
2
  import base64
3
  from io import BytesIO
4
  import os
5
  from datetime import datetime
6
 
7
  app = Flask(__name__)
8
- app.config['UPLOAD_FOLDER'] = 'static/images' # Папка для сохранения изображений
9
 
 
 
 
 
 
 
 
 
10
  @app.route('/', methods=['POST'])
11
  def process_bytesio():
12
  data = request.json # Получаем JSON из запроса
13
  if data and "BytesIO" in data:
14
- input_str = data["BytesIO"]
15
- input_bytes = base64.b64decode(input_str) # Декодируем из base64
16
- bytes_io = BytesIO(input_bytes)
 
17
 
18
- # Генерируем уникальное имя файла для сохранения изображения
19
- timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
20
- filename = f'image_{timestamp}.png'
21
- filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
22
 
23
- # Сохраняем изображение
24
- with open(filepath, 'wb') as f:
25
- f.write(bytes_io.getbuffer())
26
 
27
- # Генерируем URL для доступа к изображению
28
- image_url = url_for('static', filename=os.path.join('images', filename), _external=True)
29
 
30
- # Отправляем ответ с URL изображения
31
- return jsonify({"image_url": image_url})
 
 
 
32
  else:
33
  return jsonify({"error": "No data provided or missing 'BytesIO' key"}), 400
34
 
 
 
 
 
 
35
  if __name__ == '__main__':
36
  # Убедитесь, что папка для загрузки существует
37
  os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
38
- app.run(host='0.0.0.0', port=7860)
 
 
 
1
+ from flask import Flask, request, jsonify, url_for, send_from_directory
2
  import base64
3
  from io import BytesIO
4
  import os
5
  from datetime import datetime
6
 
7
  app = Flask(__name__)
 
8
 
9
+ # Настройка папки для загрузки изображений
10
+ app.config['UPLOAD_FOLDER'] = 'static/images'
11
+
12
+ # Настройка логирования
13
+ import logging
14
+ logging.basicConfig(level=logging.DEBUG)
15
+
16
+ # Главный маршрут, теперь принимающий POST-запросы
17
  @app.route('/', methods=['POST'])
18
  def process_bytesio():
19
  data = request.json # Получаем JSON из запроса
20
  if data and "BytesIO" in data:
21
+ try:
22
+ input_str = data["BytesIO"]
23
+ input_bytes = base64.b64decode(input_str) # Декодируем из base64
24
+ bytes_io = BytesIO(input_bytes)
25
 
26
+ # Генерируем уникальное имя файла для сохранения изображения
27
+ timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
28
+ filename = f'image_{timestamp}.png'
29
+ filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
30
 
31
+ # Сохраняем изображение
32
+ with open(filepath, 'wb') as f:
33
+ f.write(bytes_io.getbuffer())
34
 
35
+ # Генерируем URL для доступа к изображению
36
+ image_url = url_for('static', filename=os.path.join('images', filename), _external=True)
37
 
38
+ # Отправляем ответ с URL изображения
39
+ return jsonify({"image_url": image_url})
40
+ except Exception as e:
41
+ app.logger.error(f'An error occurred: {e}')
42
+ return jsonify({"error": "An error occurred while processing the image"}), 500
43
  else:
44
  return jsonify({"error": "No data provided or missing 'BytesIO' key"}), 400
45
 
46
+ # Отдача статических файлов (изображений)
47
+ @app.route('/static/images/<filename>')
48
+ def uploaded_file(filename):
49
+ return send_from_directory(app.config['UPLOAD_FOLDER'], filename)
50
+
51
  if __name__ == '__main__':
52
  # Убедитесь, что папка для загрузки существует
53
  os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
54
+
55
+ # Запуск Flask-приложения с включенным режимом отладки
56
+ app.run(host='0.0.0.0', port=7860, debug=True)