v1.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from flask import Blueprint, request, jsonify, redirect, url_for, current_app, send_from_directory, make_response
  2. import datetime
  3. import os
  4. import shutil
  5. bp = Blueprint('v1', __name__, url_prefix='/api/v1')
  6. # get flask app
  7. def allowed_file(filename):
  8. ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp'])
  9. return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
  10. @bp.route('/')
  11. def home():
  12. return make_response(jsonify({
  13. 'status': 0,
  14. 'msg': "api/v1"
  15. }))
  16. @bp.route('/upload', methods=['GET', 'POST'])
  17. def upload_file():
  18. file = request.files['file']
  19. print(datetime.datetime.now(), file.filename)
  20. if file and allowed_file(file.filename):
  21. src_path = os.path.join(current_app.config['UPLOAD_FOLDER'], file.filename)
  22. file.save(src_path)
  23. shutil.copy(src_path, './tmp/ct')
  24. image_path = os.path.join('./tmp/ct', file.filename)
  25. print(src_path, image_path)
  26. pid, image_info = paddlex.main.c_main(image_path, current_app.model)
  27. return jsonify({'status': 1,
  28. 'image_url': 'http://127.0.0.1:5003/tmp/ct/' + pid,
  29. 'draw_url': 'http://127.0.0.1:5003/tmp/draw/' + pid,
  30. 'image_info': image_info
  31. })
  32. else:
  33. return jsonify({
  34. 'status': -1,
  35. 'msg': 'file type error'
  36. })
  37. @bp.route("/download", methods=['GET'])
  38. def download_file():
  39. # 需要知道2个参数, 第1个参数是本地目录的path, 第2个参数是文件名(带扩展名)
  40. return send_from_directory('data', 'testfile.zip', as_attachment=True)
  41. # show photo
  42. @bp.route('/tmp/<path:file>', methods=['GET'])
  43. def show_photo(file):
  44. if request.method == 'GET':
  45. if not file is None:
  46. try:
  47. image_data = open(f'tmp/{file}', "rb").read()
  48. response = make_response(image_data)
  49. response.headers['Content-Type'] = 'image/png'
  50. except Exception as e:
  51. response = make_response(jsonify({
  52. 'status': -1,
  53. 'msg': str(e)
  54. }))
  55. return response