fastapi 上传excel文件,并保存在指定文件
时间: 2024-09-20 18:11:13 浏览: 46
FastAPI后端查询数据在前端进行分页展示(html、py文件)
FastAPI是一个轻量级的Web框架,用于构建Python web应用。如果你想让用户通过FastAPI接口上传Excel文件并保存到指定位置,可以按照以下步骤操作:
1. 首先,安装必要的库:
- 使用`fastapi`
- `starlette.requests`处理文件上传
- `openpyxl`或`pandas`读取Excel内容(如果需要解析)
- `pathlib`处理文件路径
```bash
pip install fastapi starlette requests openpyxl pandas
```
2. 创建FastAPI应用,并设置路由和处理器函数:
```python
from fastapi import FastAPI, File, UploadFile
import os
from pathlib import Path
app = FastAPI()
UPLOAD_DIR = "uploads" # 你需要创建这个目录
ALLOWED_EXTENSIONS = {'xlsx', 'xls'}
@app.post("/upload_excel/")
async def upload_excel(file: UploadFile = File(...)):
filename = file.filename
if not allowed_file(filename):
return {"error": f"只允许上传.xlsx或.xls文件"}
# 保存文件到指定目录
file_path = os.path.join(UPLOAD_DIR, filename)
with open(file_path, "wb") as buffer:
buffer.write(file.file.read())
# 可能还需要处理Excel内容,这里仅保存了文件
# 使用openpyxl:
# workbook = await read_excel_from_buffer(file.file)
# 或者使用pandas:
# data = await load_excel_to_dataframe(file_path)
return {"message": "文件已上传", "file_path": file_path}
def allowed_file(filename: str) -> bool:
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
# 可选的辅助函数,假设使用openpyxl
async def read_excel_from_buffer(buffer: bytes):
pass
# 可选的辅助函数,假设使用pandas
async def load_excel_to_dataframe(file_path: str):
pass
```
3. 运行你的FastAPI应用。
阅读全文