DeepLearning成果web可视化:Flask

python-web:

ocr.html中有这么一段代码
在这里插入图片描述
点击submit类型的“上传”,会触发该表单的method,浏览器会向flask服务器发送post请求。

HTTP协议:
HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。

GET:向特定的资源发出请求
POST:客户端向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体request中。url也在

from flask import Flask, jsonify, flash, Response
from flask import make_response
from flask import request, render_template
from flask_bootstrap import Bootstrap
from flask import redirect, url_for
from flask import send_from_directory
from werkzeug.utils import secure_filename
app = Flask(__name__)
bootstrap = Bootstrap(app)
@app.route('/', methods=['GET', 'POST']) #route()装饰器把一个函数绑定到对应的URL上 '/'同app指定,在该url下发生相应请求该方法才有效
def ocr_upload_file():
    if request.method == 'POST':  
        if 'file' not in request.files:  # check if the post request has the file part
            flash('No file part')
            return redirect(request.url)  #back to client's url of request   PS:redirect函数把用户重定向到其它地方
        file = request.files['file']
            if file.filename == '': # submit a empty part without filename due to do not select file
            flash('No selected file')
            return redirect(request.url)    
        filename = file.filename   
        if file and allowed_file(filename):
            if is_video(filename):
                        ....
            else:
                filename = secure_filename(filename)  #服务器存储文件名同客户端上传的
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) #存储至flask服务器文件系统上(即本地)
                return redirect(url_for('predict_ocr_image', filename=filename))
        #url_for()来给指定的函数构造URL。它接受函数名作为第一个参数,也接受对应URL规则的变量部分的命名参数如'/image_ocr/<filename>'
return render_template("ocr.html")  #会在templates文件夹里寻找模板

在 HTML 表单中设置enctype=multipart/form-data,要不客户端不发数据给flask服务器,何谈保存

@app.route('/image_ocr/<filename>')
def predict_ocr_image(filename):
    img_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
    save_path = os.path.join(app.config['IMAGE_FOLDER'], filename)
    image = detection(img_path, ocr_detection_model, ocr_recognition_model, ocr_label_dict)
    cv2.imwrite(save_path, image)
    return send_from_directory(app.config['IMAGE_FOLDER'],filename) #将生成的结果发送给浏览器
@app.errorhandler(404)  #状态码404,请求的资源(网页等)不存在
def not_found(error):
    return make_response(jsonify({'error': 'Not found'}), 404)#make_response 响应返回内容  jsonify函数处理返回序列化json数据  

#make_response 响应返回页面 make_response (render_template(“ocr.html”))

if __name__ == '__main__':
    app.run(debug=True) #默认url是127.0.0.1:5000
发布了37 篇原创文章 · 获赞 2 · 访问量 1707
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览