前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >FastAPI搭建文件上传服务器

FastAPI搭建文件上传服务器

作者头像
里克贝斯
发布2021-05-21 10:31:01
发布2021-05-21 10:31:01
2.7K00
代码可运行
举报
文章被收录于专栏:图灵技术域图灵技术域
运行总次数:0
代码可运行

FastAPI 是一个高性能 Web 框架,也是一个Python包,用于构建 API,适合利用极少的代码搭建服务器后端,实现前后端分离。

下面给出了一个任务:利用FastAPI搭建文件上传服务器,给出上传接口,并保存到服务器指定位置。

需要使用的Python包:fastapi和uvicorn。

服务器代码

其中with open(file.filename, “wb”)是将客户上传的文件保存起来,上传的url地址为host:port/file_upload,可以自定义端口和host。

注意如果在前端配置的时候出现跨域问题需要添加FastAPI跨域规则。

Python

代码语言:javascript
代码运行次数:0
运行
复制
import time
import uvicorn
from fastapi import FastAPI, File, UploadFile

app = FastAPI()


@app.post("/file_upload")
async def file_upload(file: UploadFile = File(...)):
    start = time.time()
    try:
        res = await file.read()
        with open(file.filename, "wb") as f:
            f.write(res)
        return {"message": "success", 'time': time.time() - start, 'filename': file.filename}
    except Exception as e:
        return {"message": str(e), 'time': time.time() - start, 'filename': file.filename}


if __name__ == '__main__':
    uvicorn.run(app=app, host="127.0.0.1", port=8000, workers=1)

客户端代码示例

此客户端的需要上传的文件在path中,url即为文件上传的API。

Python

代码语言:javascript
代码运行次数:0
运行
复制
import requests
url = "http://127.0.0.1:8000/file_upload"
path = "C:\\Users\\me\\Desktop\\pic.jpeg"
files = {'file': open(path, 'rb')}
r = requests.post(url, files=files)
print(r.url)
print(r.text)

PS:除了Python客户端外,还可以采用在JS中编写post请求(服务器端代码无需修改),实现在浏览器中上传文件到服务器。

相关文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务器代码
  • 客户端代码示例
    • 相关文章
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档