第 6 章: 文件上传


本章概述

学习如何在FastAPI中实现文件上传功能。


6.1 File类型

使用File接收上传的文件:

from fastapi import FastAPI, File, UploadFile

app = FastAPI()

@app.post("/uploadfile/")
def create_upload_file(file: bytes = File(...)):
    return {"file_size": len(file)}

6.2 UploadFile类型

UploadFile提供更好的性能(使用临时文件):

from fastapi import FastAPI, File, UploadFile

app = FastAPI()

@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
    return {
        "filename": file.filename,
        "content_type": file.content_type
    }

6.3 保存文件

from fastapi import FastAPI, File, UploadFile
import shutil

app = FastAPI()

@app.post("/uploadfile/")
def create_upload_file(file: UploadFile = File(...)):
    with open(f"uploads/{file.filename}", "wb") as buffer:
        shutil.copyfileobj(file.file, buffer)
    
    return {"filename": file.filename}

6.4 处理多个文件

from typing import List

@app.post("/uploadfiles/")
async def create_upload_files(files: List[UploadFile] = File(...)):
    return {"filenames": [file.filename for file in files]}

文件上传示例1 文件上传示例2


小结

本章学习了: - ✅ 使用File和UploadFile接收文件 - ✅ 保存上传的文件 - ✅ 处理多个文件上传