如何在FastAPI中使用uploadfile功能来读取上传的文件?
时间: 2024-11-27 13:15:28 浏览: 4
服务器一键可运行,基于Python-fastapi实现的文件上传到服务器的服务(运行在服务器端)
在FastAPI中,你可以使用`File`类和`Form`类来处理文件上传。首先,你需要安装`fastapi`和`fastapi-formatter`等相关的库,如果还没有安装,可以使用pip来安装:
```bash
pip install fastapi fastapi-formatter pydantic
```
接下来,创建一个`File`模型来定义用户上传文件的结构,例如:
```python
from pydantic import BaseModel
class FileUpload(BaseModel):
file: bytes = (None, "File to upload")
```
然后,在FastAPI路由中,你可以接收POST请求,并从请求体中获取文件:
```python
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/upload-file")
async def create_upload_file(file: UploadFile = File(...)):
content = await file.read() # 读取文件内容
filename = file.filename # 获取文件名
# 这里你可以将文件保存到服务器、数据库或其他地方,具体看需求
# 比如:
with open("uploads/" + filename, "wb") as f:
f.write(content)
return {"filename": filename, "content_length": len(content)}
```
在上述示例中,`UploadFile`是一个装饰器,用于指定`file`参数是要上传的文件。当文件被上传时,`read()`函数会读取整个文件内容。
阅读全文