返回

FastAPI:轻松实现文件上传的秘籍

后端

在当今互联网世界,文件的上传和下载是开发中普遍遇到的问题。在使用Python开发的Web应用程序时,FastAPI是一个流行的框架,它提供了对文件上传的支持。通过FastAPI,开发者可以轻松实现上传和下载文件功能。

使用File实现文件上传

使用File实现文件上传非常简单,只需要在FastAPI的路由函数中将参数类型设置为File,如下所示:

@app.post("/uploadfile")
async def upload_file(file: UploadFile = File(...)):
    """
    上传文件
    """
    # 将文件保存到本地
    with open(file.filename, "wb") as f:
        f.write(file.file.read())
    # 返回文件信息
    return {"filename": file.filename, "size": file.file.size}

在上面的代码中,UploadFile是FastAPI提供的文件上传类型。file.filename是上传的文件名,file.file.size是上传文件的大小。

使用Form表单上传文件

除了使用File实现文件上传外,FastAPI还支持使用Form表单上传文件。在Form表单上传文件中,需要在HTML表单中添加一个<input type="file">元素,如下所示:

<form action="/uploadfile" method="post" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="Upload">
</form>

在FastAPI的路由函数中,需要使用request.files来获取上传的文件,如下所示:

@app.post("/uploadfile")
async def upload_file(file: UploadFile = File(...)):
    """
    上传文件
    """
    # 将文件保存到本地
    with open(file.filename, "wb") as f:
        f.write(file.file.read())
    # 返回文件信息
    return {"filename": file.filename, "size": file.file.size}

在上面的代码中,request.files是一个字典,其中包含了所有上传的文件。file是上传文件的键,UploadFile是上传文件的类型。

总结

FastAPI提供了对文件上传的支持,包括使用File实现文件上传和使用Form表单上传文件的方式。通过使用FastAPI,开发者可以轻松实现上传和下载文件功能,从而使应用程序更加灵活,能够轻松接收和处理用户提交的文件。