利用Python开发一个上传文件的服务

准备工作:

1、安装uvicorn,利用其来作为web服务器

2、安装Starlette,利用其来作为web开发框架

3、安装python-multipart,让其支持form表达形式的文件上传

4、postman:文件上传的发起者,这样我们就不用写前端界面了

代码:

python 复制代码
import uvicorn
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.datastructures import UploadFile
from starlette.routing import Route
import asyncio


async def semanticTextualDeduplication(request):
    lineSize = 0
    try:
        form: UploadFile = await request.form()
        file = form["file"]
        contents = await file.read()
        content_str = contents.decode('utf-8')
        lines = content_str.splitlines()
        lineSize = len(lines)
        for line in lines:
            print(line.strip())
    except Exception as e:
        # 处理其他异常
        print("发生了异常:", e)
    return JSONResponse({"lineSize": lineSize})

app = Starlette(
    routes=[
        Route("/api/semanticTextualDeduplication.do", semanticTextualDeduplication, methods=["POST"]),
    ],
)


@app.on_event("startup")
async def startup_event():
    q = asyncio.Queue()
    app.model_queue = q


if __name__ == "__main__":
    uvicorn.run("message_receive:app", host="0.0.0.0", port=8080, access_log=False)

测试:

1、打开postman:

1.1、注意第一个文件参数,需要在输入key以后选择 key的类型为file

2、结果:

相关推荐
ZC跨境爬虫1 分钟前
LeetCode 13. 罗马数字转整数(多解法详解 + Java Python 实现)
java·python·leetcode
machnerrn15 分钟前
智慧交通系列(一)-十字路口车辆闯红灯检测告警抓拍系统(附含数据+源码+模型)
人工智能·python·深度学习
现代野蛮人16 分钟前
【深度学习实验】—— 利用 RNN 模型进行心脏病预测
pytorch·python·tensorflow·ml
2601_9563198835 分钟前
2026年用示例、拆解和练习提升量化理解效率
人工智能·python
王志来137944730081 小时前
从分散到集成:工控服务器机箱采购如何实现“一站式”破局
运维·服务器·人工智能·python
三十岁老牛再出发1 小时前
08.18每日总结
c++·python·numpy·pandas
️学习的小王1 小时前
Anaconda国内镜像配置与conda常用命令
ide·经验分享·python·conda
Zane19942 小时前
daemon 线程说没就没?一文讲透 threading 的适用场景与线程安全
后端·python
up up day2 小时前
Python enchant 模块使用教程
python
zoujiahui_20182 小时前
Python 包与环境管理工具 uv
开发语言·python·uv