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

FastAPI-文件上传(三)

原创
作者头像
堕落飞鸟
发布2023-05-07 21:25:25
发布2023-05-07 21:25:25
1.3K00
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

如何限制文件大小和类型

在FastAPI中,你可以通过设置参数的限制条件来限制文件的大小和类型。例如,你可以使用max_length参数来限制bytes类型的文件的大小,使用content_type参数来限制UploadFile类型的文件的类型。例如:

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

app = FastAPI()

@app.post("/files/")
async def create_file(file: bytes = File(..., max_length=100000), fileb: UploadFile = File(..., content_type=["image/png", "image/jpeg"]), token: str = Form(...)):
    return {"file_size": len(file), "token": token}

上面的代码限制了bytes类型的文件的大小不超过100000字节,限制了UploadFile类型的文件的类型必须是image/png或者image/jpeg

文件上传的完整示例

下面是一个完整的FastAPI文件上传的示例代码:

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

app = FastAPI()

@app.post("/files/")
async def create_file(file: bytes = File(..., max_length=100000), fileb: UploadFile = File(..., content_type=["image/png", "image/jpeg"]), token: str = Form(...)):
    with open("file.txt", "wb") as f:
        f.write(file)
    os.makedirs("/app/data", exist_ok=True)
    shutil.copy2(fileb.filename, "/app/data")
    return {"file_size": len(file), "token": token}

在这个示例中,我们声明了一个POST方法,它接收一个bytes类型的文件和一个UploadFile类型的文件,还有一个token字符串字段。我们使用max_lengthcontent_type参数来限制文件的大小和类型。我们将文件保存到了当前目录下的file.txt文件中,同时将fileb保存到了/app/data目录下。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何限制文件大小和类型
  • 文件上传的完整示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档