Rooni commited on
Commit
6c11ffb
·
verified ·
1 Parent(s): 23db19f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -21
app.py CHANGED
@@ -1,10 +1,7 @@
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
  import logging
7
- import re
8
 
9
  app = Flask(__name__)
10
 
@@ -18,32 +15,26 @@ 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
 
 
 
 
 
 
39
  # Генерируем уникальное имя файла для сохранения изображения
40
  timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
41
  filename = f'image_{timestamp}.png'
42
  filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
43
 
44
  # Сохраняем изображение
45
- with open(filepath, 'wb') as f:
46
- f.write(bytes_io.getbuffer())
47
 
48
  # Генерируем URL для доступа к изображению
49
  image_url = url_for('uploaded_file', filename=filename, _external=True)
@@ -54,7 +45,7 @@ def process_bytesio():
54
  app.logger.error(f'An error occurred: {e}')
55
  return jsonify({"error": "An error occurred while processing the image"}), 500
56
  else:
57
- return jsonify({"error": "No data provided or missing 'BytesIO' key"}), 400
58
 
59
  # Отдача статических файлов (изображений)
60
  @app.route('/static/images/<filename>')
 
1
  from flask import Flask, request, jsonify, url_for, send_from_directory
 
 
2
  import os
3
  from datetime import datetime
4
  import logging
 
5
 
6
  app = Flask(__name__)
7
 
 
15
  handler.setLevel(logging.DEBUG)
16
  app.logger.addHandler(handler)
17
 
 
 
 
 
 
18
  # Главный маршрут, теперь принимающий POST-запросы
19
  @app.route('/', methods=['POST'])
20
+ def process_image():
21
+ if 'image' not in request.files:
22
+ return jsonify({"error": "No image part in the request"}), 400
23
+
24
+ file = request.files['image']
 
 
 
 
 
25
 
26
+ if file.filename == '':
27
+ return jsonify({"error": "No image selected for uploading"}), 400
28
+
29
+ if file:
30
+ try:
31
  # Генерируем уникальное имя файла для сохранения изображения
32
  timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
33
  filename = f'image_{timestamp}.png'
34
  filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
35
 
36
  # Сохраняем изображение
37
+ file.save(filepath)
 
38
 
39
  # Генерируем URL для доступа к изображению
40
  image_url = url_for('uploaded_file', filename=filename, _external=True)
 
45
  app.logger.error(f'An error occurred: {e}')
46
  return jsonify({"error": "An error occurred while processing the image"}), 500
47
  else:
48
+ return jsonify({"error": "Invalid image data"}), 400
49
 
50
  # Отдача статических файлов (изображений)
51
  @app.route('/static/images/<filename>')