Python基于 Flask 创建简单Web服务并接收文件

  • 在全部网口上创建web服务, 监听8080端口
  • 关闭debug模式
  • GET时返回HTML界面, 用于提交文件
  • POST到 /upload 时, 从接收的 file 变量中读取文件, 并传递给 opencv 解析为 image 对象
from flask import Flask, request, redirect, url_for
import os
import cv2
import numpy
import json

app = Flask(__name__)

app.config['ALLOWED_EXTENSIONS'] = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}

# Function to check if the file has an allowed extension
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS']

@app.route('/')
def index():
    return '''
    
        
            

Service is Ready

Function: File:
'''
@app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return 'No file part' file = request.files['file'] if file.filename == '': return 'No selected file' if file and allowed_file(file.filename): result = {} try: #read image file string data filestr = file.read() #convert string data to numpy array file_bytes = numpy.frombuffer(filestr, numpy.uint8) # convert numpy array to image img = cv2.imdecode(file_bytes, cv2.IMREAD_UNCHANGED) height, width = img.shape[:2] result = { "code": 0, "message": "succ", "data": { "size": file_bytes.size, "height": height, "width": width } } except: print("Error occurred") result = { "code": 1, "message": "error", "data": None } pass return json.dumps(result) else: return 'Invalid file format' if __name__ == '__main__': # Start the Flask server on port 8080 app.run(debug=False, host='0.0.0.0', port=8080)

如果要保存文件

filename = os.path.join(PYHSICAL_PATH, file.filename)
file.save(filename)

你可能感兴趣的:(Python,flask)