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

相关推荐
good good study"2 小时前
PyCharm 添加 Conda 环境报错 “lateinit property envs_dirs has not been initialized“ 的完美解决
python·conda
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列21--结合Pytest框架使用2--断言和插件
python·学习·测试工具·pytest
码智社2 小时前
Python安装配置超详细教程(Windows+macOS,新手零踩坑)
windows·python·macos
wuxinyan1232 小时前
工业级大模型学习之路026:LangGraph 入门与基础 Agent 开发
人工智能·python·学习·langsmith
AIFQuant3 小时前
量化交易系统:历史行情 API 批量拉取与回测数据清洗
开发语言·python·金融·restful·量化交易
骑士雄师3 小时前
Python (PyMySQL) vs Java (JDBC) 数据库操作对比
开发语言·python
weixin199701080163 小时前
[特殊字符] 从1688接口设计,学习高可用API的最佳实践(附Python源码)
python·学习·spring
隔壁大炮3 小时前
MNE-Python 第8天学习笔记:时频分析(ERD/ERS)
python·eeg·mne·脑电数据处理
小许同学记录成长3 小时前
gr-analog 模拟信号模块完整源码分析
python·算法·信号处理