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 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.mzph.cn/pingmian/69947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper的zkCli.sh登录server报错【无法正常使用】

如果zookeeper使用zkCli.sh登录的时候老是频闪&#xff0c;没有办法正常使用&#xff0c;大概率是与java的版本不兼容 [zookeeperPostgreSQL bin]$ ./zkCli.sh Connecting to localhost:2181 2025-02-05 19:23:53,933 [myid:] - INFO [main:Environment100] - Client envir…

初始JavaEE篇 —— Spring Web MVC入门(下)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 初始JavaEE篇 —— Spring Web MVC入门&#xff08;上&#xff09; 在上篇文章中&#xff0c;我们学习了一些注解的使用、Postman模…

【verilog】函数clogb2的解读

最近经常看到clogb2函数。 源代码如下所示。 function integer clogb2; input [31:0] value; reg [31:0] tmp; reg [31:0] rt; begin tmp value - 1; for (rt 0; tmp > 0; rt rt 1) tmp tmp >> 1; clogb2 rt; end endfunction 这个函数的意思是&#xff1a;这段…

鸿蒙app开发中 tab 切换的时候 里面的子组件如何在页面出现的时候 就请求数据

解决方案 使用 鸿蒙提供的 onVisibleAreaChange 就是页面一出现就请求这个回调 .onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) > {console.info(Test Text isVisible: isVisible , currentRatio: currentRatio)if (isVisible &am…

c/c++蓝桥杯经典编程题100道(19)质因数分解

汉诺塔问题 ->返回c/c蓝桥杯经典编程题100道-目录 目录 汉诺塔问题 一、题型解释 二、例题问题描述 三、C语言实现 解法1&#xff1a;递归法&#xff08;难度★&#xff09; 解法2&#xff1a;迭代法&#xff08;难度★★★&#xff09; 四、C实现 解法1&#xff1…

Linux:线程的互斥与同步

一、买票的线程安全 大部分情况&#xff0c;线程使用的数据都是局部变量&#xff0c;变量的地址空间在线程栈空间内&#xff0c;这种情况&#xff0c;变量归属单个线程&#xff0c;其他线程无法获得这种变量。 但有时候&#xff0c;很多变量都需要在线程间共享&#xff0c;这样…

ESP学习-1(MicroPython VSCode开发环境搭建)

下载ESP8266固件&#xff1a;https://micropython.org/download/ESP8266_GENERIC/win电脑&#xff1a;pip install esptools python.exe -m pip install --upgrade pip esptooo.py --port COM5 erase_flash //清除之前的固件 esptool --port COM5 --baud 115200 write_fla…

什么是多光谱环形光源

多光谱环形光源是一种用于机器视觉、工业检测和科学研究的光源设备&#xff0c;能够提供多种波长的光&#xff0c;适用于不同材料和表面的检测需求。以下是其关键特点和应用&#xff1a; 关键特点 多光谱输出&#xff1a;可发射多种波长的光&#xff08;如可见光、红外光、紫外…

什么是UV环形光源

UV环形光源是一种用于特定照明需求的设备&#xff0c;以下是其关键点&#xff1a; 定义 UV环形光源&#xff1a;发出紫外光的环形照明装置&#xff0c;常用于机器视觉、工业检测等领域。特点 均匀照明&#xff1a;环形设计确保光线均匀分布&#xff0c;减少阴影。 高亮度&…

泛型的原理、优点以及可能存在的问题

泛型的原理 泛型是Java引入的一种特性&#xff0c;允许在定义类、接口或方法时使用类型参数&#xff0c;从而实现对不同类型的通用操作。泛型的核心原理是类型参数化和类型擦除。 类型参数化&#xff1a;泛型允许在定义类、接口或方法时使用类型参数&#xff08;如<T>&…

Agents Go Deep 智能体深入探索

Agents Go Deep 智能体深入探索 核心事件 OpenAI发布了一款先进的智能体“深度研究”&#xff0c;它能借助网络搜索和推理生成研究报告。 最新进展 功能特性&#xff1a;该智能体依据数百个在线资源生成详细报告&#xff0c;目前仅支持文本输出&#xff0c;不过很快会增加对图…

Kubernetes (k8s) 常用指令速查表

以下是一份 Kubernetes (k8s) 常用指令速查表&#xff0c;涵盖集群管理、资源操作、故障排查等场景&#xff0c;适合日常运维和开发使用&#xff1a; 1. 集群与节点管理 命令说明kubectl cluster-info查看集群基本信息kubectl get nodes查看所有节点状态kubectl describe node…

【ubuntu24.04】 强制重启导致大模型的磁盘挂载出错

挂载NTFS文件系统出错 各种模型放在了这个机械硬盘上&#xff0c;虽然速度慢&#xff0c;但是好在容量大。大模型在工作&#xff0c;但是程序看起来有问题&#xff0c;导致系统卡死了&#xff0c;然后我重启了&#xff0c;然后报错&#xff1a;wrong fs type bad option &…

【鸿蒙开发】第三十六章 状态管理 - V1V2混用和迁移指导

目录​​​​​​​ 1 自定义组件混用场景指导 1.1 概述 1.2 状态管理装饰器总览 状态管理V1的装饰器 状态管理V2的装饰器 状态管理装饰器支持的数据类型总览 1.3 限制条件 1.3.1 V1和V2的装饰器不允许混用 1.V1的自定义组件中不可以使用V2的装饰器 2.V2的自定义组件…

1.14学习总结

日常刷题单 刷了题目后&#xff0c;对于排序方法更加熟练&#xff0c;手搓代码的速度也得到了提高。 感觉字符串还不熟练&#xff0c;高精度更是云里雾里&#xff0c;上升空间极大。 同时看见今晚有个入门难度的测试&#xff0c;去练了练手&#xff0c;想看看自己是什么成分&…

vscode环境搭建

目录 一、安装VSCode 二、安装Python 三、安装Anaconda&#xff08;可选&#xff0c;但推荐&#xff09; 四、安装深度学习相关库 五、配置VSCode 六、 结果可视化 一、安装VSCode 访问官网下载&#xff1a;从VSCode官方网站下载适合你操作系统的安装包。安装&#xff1a;运行安…

自定义解的使用,反射,代理模式

文章目录 自定义注解反射代理模式、静态代理动态代理 自定义注解 springboot 框架中定义了大量的注解&#xff0c;为什么加上注解之后就能实现配置了。比如Autowired, 将 IOC 中的对象拿出来使用。 创建自定义的注解 Target(ElementType.METHOD) //作用的目标 Retention(Re…

Pyqt6 中 QMediaPlayer 音视频播放

QMediaPlayer 是 PyQt6 中用于音视频播放的类&#xff0c;提供了对多种媒体格式的支持&#xff0c;能够播放本地文件、流媒体、音频以及视频等。它是 QtMultimedia 模块的一部分&#xff0c;主要通过与 QMediaPlayer 结合使用的控件&#xff0c;如 QVideoWidget 来显示视频内容…

【深度强化学习】策略梯度算法:REINFORCE

策略梯度 强化学习算法进阶 Q-learning、DQN 及 DQN 改进算法都是基于价值&#xff08;value-based&#xff09;的方法&#xff0c;其中 Q-learning 是处理有限状态的算法&#xff0c;而 DQN 可以用来解决连续状态的问题。在强化学习中&#xff0c;除了基于值函数的方法&#…

冒泡排序的缺陷及优化

冒泡排序的缺陷及优化 定义&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单且常用的排序算法。其基本思想是通过多次遍历待排序的序列&#xff0c;依次比较相邻的两个元素&#xff0c;并根据需要交换它们的位置&#xff0c;使得较大的元素逐渐向后移动&a…