Rooni commited on
Commit
23db19f
·
verified ·
1 Parent(s): 157a73d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -3
app.py CHANGED
@@ -3,6 +3,8 @@ import base64
3
  from io import BytesIO
4
  import os
5
  from datetime import datetime
 
 
6
 
7
  app = Flask(__name__)
8
 
@@ -10,16 +12,27 @@ app = Flask(__name__)
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
 
@@ -33,7 +46,7 @@ def process_bytesio():
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})
 
3
  from io import BytesIO
4
  import os
5
  from datetime import datetime
6
+ import logging
7
+ import re
8
 
9
  app = Flask(__name__)
10
 
 
12
  app.config['UPLOAD_FOLDER'] = 'static/images'
13
 
14
  # Настройка логирования
 
15
  logging.basicConfig(level=logging.DEBUG)
16
 
17
+ handler = logging.StreamHandler()
18
+ handler.setLevel(logging.DEBUG)
19
+ app.logger.addHandler(handler)
20
+
21
+ # Валидация строки base64
22
+ def is_base64_encoded(s):
23
+ pattern = r'^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$'
24
+ return re.match(pattern, s) is not None
25
+
26
  # Главный маршрут, теперь принимающий POST-запросы
27
  @app.route('/', methods=['POST'])
28
  def process_bytesio():
29
  data = request.json # Получаем JSON из запроса
30
  if data and "BytesIO" in data:
31
+ input_str = data["BytesIO"]
32
+ if not is_base64_encoded(input_str):
33
+ return jsonify({"error": "Invalid base64 data"}), 400
34
+
35
  try:
 
36
  input_bytes = base64.b64decode(input_str) # Декодируем из base64
37
  bytes_io = BytesIO(input_bytes)
38
 
 
46
  f.write(bytes_io.getbuffer())
47
 
48
  # Генерируем URL для доступа к изображению
49
+ image_url = url_for('uploaded_file', filename=filename, _external=True)
50
 
51
  # Отправляем ответ с URL изображения
52
  return jsonify({"image_url": image_url})