利用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、结果:

相关推荐
曲幽6 小时前
FastAPI生命周期管理实战:从启动到关闭,如何优雅地管好你的“资源家当”
redis·python·fastapi·web·shutdown·startup·lifespan
gr17856 小时前
通过dify文件上传能力,解决较大文本与LLM实时交互问题
python·llm·aigc·dify
学习的周周啊6 小时前
ClawdBot(openclaw) + Cloudflare Tunnel + Zero-Trust 零基础保姆教程
网络·人工智能·python·clawdbot
电饭叔6 小时前
DataFrame和 Series 索引
android·python
穿过锁扣的风6 小时前
决策树:从入门到实战,解锁 AI 分类预测的核心利器
数据结构·python·决策树
爱学习的阿磊6 小时前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
啊阿狸不会拉杆6 小时前
《机器学习导论》第 1 章 - 引言
人工智能·python·算法·机器学习·ai·numpy·matplotlib
阿钱真强道7 小时前
11 JetLinks MQTT 直连设备功能调用完整流程与 Python 实现
服务器·开发语言·网络·python·物联网·网络协议
2401_841495647 小时前
【LeetCode刷题】对称二叉树
数据结构·python·算法·leetcode·二叉树··递归
小饼干超人7 小时前
pytorch返回张量元素总数量的方法 x.numel()
人工智能·pytorch·python