@app.route('/upload', methods=['POST', 'GET']) # 添加路由 def upload(): if request.method == 'POST': f = request.files['file'] basepath = os.path.dirname(__file__) # 当前文件所在路径 upload_path = os.path.join(basepath, 'static/images', secure_filename(f.filename)) f.save(upload_path) # 使用Opencv转换一下图片格式和名称 img = cv2.imread(upload_path) width=img.shape[1] height=(400/width)*img.shape[0] width=400 img= cv2.resize(img,(int(width), int(height))) filenamesave=str(time.time())+".jpg" cv2.imwrite(os.path.join(basepath, 'static/images', filenamesave), img) dict1={"state":1,"path":filenamesave} return jsonify(dict1) return "Please use Post"
时间: 2024-04-28 21:25:33 浏览: 106
这是一个 Flask 的路由函数,用于处理客户端上传的图片文件。当请求方法为 POST 时,函数会从请求中获取图片文件,将其保存在服务器上,然后使用 OpenCV 对图片进行格式转换和尺寸调整,最后返回一个 JSON 格式的响应,包含上传图片的状态和保存路径。如果请求方法不是 POST,则返回一个字符串 "Please use Post"。
相关问题
from flask import Flask, render_template from flask import Flask, render_template, request, redirect, url_for from werkzeug.utils import secure_filename from Predict import predict import os from gevent import pywsgi app = Flask(__name__) @app.route('/', methods = ['POST', 'GET']) def upload(): if request.method == 'POST': f = request.files['file'] if f.filename == '': return redirect(url_for('wrong')) basepath = os.path.dirname(__file__) upload_path = os.path.join(basepath, 'report', secure_filename(f.filename)) # 注意:没有的文件夹一定要先创建,不然会提示没有该路径 f.save(upload_path) # upload_path = str(upload_path) return redirect(url_for('result', path=f.filename)) return render_template('index.html') @app.route('/wrong') def wrong(): return render_template('wrong.html') @app.route('/result/<path>/') def result(path): result = predict('report/'+path) # return result return render_template('result.html', result=result) if __name__ == '__main__': app.run(debug=True) #server = pywsgi.WSGIServer(('127.0.0.1', 5000), app) #server.serve_forever() #app.debug=True 详细解释
这是一个使用 Flask 框架搭建的Web应用程序,用于上传文件并对上传的文件进行预测处理。程序包括三个路由:
1. `/` 路由用于展示上传文件的页面,请求方法为 GET 和 POST;
2. `/wrong` 路由用于展示上传文件出错的页面;
3. `/result` 路由用于展示上传文件处理结果的页面,请求方法为 GET。
其中,`@app.route()` 是 Flask 中定义路由的装饰器,`‘/’` 代表根目录,`methods=['POST', 'GET']` 表示支持 POST 和 GET 请求。
在 `upload()` 函数中,首先判断请求方法是否为 POST,如果是,则获取上传的文件,判断文件名是否为空,然后将上传的文件保存到指定路径下。如果文件名为空,则重定向到 `/wrong` 路由。最后将文件名作为参数传递到 `/result` 路由。如果是 GET 请求,则渲染上传文件的页面。
在 `wrong()` 函数中,渲染上传文件出错的页面。
在 `result()` 函数中,获取上传文件的文件名,调用 `predict()` 函数进行文件处理,最后渲染上传文件处理结果的页面,并将处理结果传递给页面。
`if __name__ == '__main__':` 是 Python 的入口函数,当直接运行 Python 文件时,会运行该函数下的代码。这里使用 `app.run(debug=True)` 启动 Flask 应用程序,并设置 `debug=True` 以便在开发调试时查看错误信息。
# 上传图片 @app.route("/photo/upload", methods=['POST', "GET"]) def uploads(): if request.method == 'POST': # 获取post过来的文件名称,从name=file参数中获取 file = request.files['file'] if file and allowed_file(file.filename): print(file.filename) # secure_filename方法会去掉文件名中的中文 file_name = secure_filename(file.filename) # 保存图片 file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name)) return "success" else: return "格式错误,请上传jpg格式文件" return render_template('index.html')
这段代码是一个 Flask 后端路由,用于上传图片。当请求方法为 POST 时,它会获取上传的文件,判断文件格式是否为 jpg,如果是则保存到指定目录,最后返回上传成功的信息。如果文件格式不是 jpg,则返回格式错误的信息。如果请求方法为 GET,则会渲染一个模板文件 index.html 并返回给客户端。
阅读全文