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

ops/2025/2/15 11:35:27/
  • 在全部网口上创建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 jsonapp = 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 '''<html><body><h1>Service is Ready</h1><p></p><form method="POST" action="/upload" enctype="multipart/form-data">Function: <input type="text" name="func"> File: <input type="file" name="file"> <input type="submit" value="Process"></form></body></html>'''@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 datafilestr = file.read()#convert string data to numpy arrayfile_bytes = numpy.frombuffer(filestr, numpy.uint8)# convert numpy array to imageimg = 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}passreturn json.dumps(result)else:return 'Invalid file format'if __name__ == '__main__':# Start the Flask server on port 8080app.run(debug=False, host='0.0.0.0', port=8080)

如果要保存文件

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

http://www.ppmy.cn/ops/158578.html

相关文章

【LINUX】常用指令查询

目录 文件操作查看目录&#xff08;ls/ll&#xff09;进入目录&#xff08;cd&#xff09;创建目录&#xff08;mkdir&#xff09;移动操作&#xff08;mv&#xff09;删除操作&#xff08;rm&#xff09; 文件操作 查看目录&#xff08;ls/ll&#xff09; 查看当前目录下的所…

【Qt】:概述(下载安装、认识 QT Creator)

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; 介绍 &#x1f98b; 什么是 QT&#x1f98b; QT 发展史&#x1f98b; Qt版本&#x1f98b; QT 优点 一&#xff1a;&#x1f525; 搭建Qt开发环境 &#x1f9…

科普:数据仓库中的“指标”和“维度”

在数据仓库中&#xff0c;指标和维度是两个核心概念&#xff0c;它们对于数据分析和业务决策至关重要。以下是对这两个概念的分析及举例说明&#xff1a; 一、指标 定义&#xff1a; 指标是用于衡量业务绩效的关键数据点&#xff0c;通常用于监控、分析和优化企业的运营状况。…

D365(Dynamics 365 CE/PO)审计记录(Audit)一点点分析

D365(Dynamics 365 CE/PO)审计记录(Audit)一点点分析 D365 Audit D365(Dynamics 365 CE/PO)审计记录(Audit)一点点分析 1.删除objectid&#xff08;被审计实体记录的唯一标识符&#xff09;为&#xff1a;00000000-0000-0000-0000-000000000000&#xff08;空GUID&#xff09; …

信息收集-Web应用JS架构URL提取数据匹配Fuzz接口WebPack分析自动化

知识点&#xff1a; 1、信息收集-Web应用-JS提取分析-人工&插件&项目 2、信息收集-Web应用-JS提取分析-URL&配置&逻辑 FUZZ测试 ffuf https://github.com/ffuf/ffuf 匹配插件 Hae https://github.com/gh0stkey/HaE JS提取 JSFinder https://github.com/Threez…

蓝桥杯之KMP算法

算法思想 代码实现 int* getnext() {int* next new int[s2.size()];int j 0;//用来遍历子串int k -1;//子串中公共子串的长度next[0] -1;while (j < s2.size() - 1){if (k-1||s2[k] s2[j]){k;j;if (s2[k] s2[j]){next[j] next[k];}else{next[j] k;}}else{k next[k…

DrissionPage(实战)

官网: dDrissionPage官网✨️ 概述​编辑https://www.drissionpage.cn/https://www.drissionpage.cn/ 一.导包: 创建一个py文件: from DrissionPage import ChromiumPage 我们来访问我的上一篇文章: 链接url: 爬虫自动化(DrissionPage)-CS

MySQL版本选择与安装

MySQL版本选择与安装 MySQL 5.5 优点: 稳定性&#xff1a;5.5版本是长期支持&#xff08;LTS&#xff09;版本&#xff0c;因此它非常稳定&#xff0c;被广泛部署在生产环境中。 兼容性&#xff1a;与旧版本的MySQL和各种应用程序有很好的兼容性。 缺点: 过时&#xff1a;…