gpt4 book ai didi

python - 如何使用 FastAPI 返回和下载 Excel 文件?

转载 作者:行者123 更新时间:2023-12-05 02:29:47 30 4
gpt4 key购买 nike

如何使用 FastAPI 返回 excel 文件(版本:Office365)?该文档看起来非常简单。但是,我不知道要使用什么 media_type。这是我的代码:

import os
from fastapi import FastAPI
from fastapi.responses import FileResponse
from pydantic import BaseModel
from typing import Optional

excel_file_path = r"C:\Users\some_path\the_excel_file.xlsx"

app = FastAPI()

class ExcelRequestInfo(BaseModel):
client_id: str


@app.post("/post_for_excel_file/")
async def serve_excel(item: ExcelRequestInfo):
# (Generate excel using item.)
# For now, return a fixed excel.
return FileResponse(
path=excel_file_path,

# Swagger UI says 'cannot render, look at console', but console shows nothing.
media_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

# Swagger renders funny chars with this argument:
# 'application/vnd.ms-excel'
)

假设我做对了,如何下载文件?我可以使用 FastAPI 生成的 Swagger UI 来查看工作表吗?或者, curl ?理想情况下,我希望能够在 Excel 中下载和查看文件。

最佳答案

您可以设置 Content-Disposition header using the attachment parameter , 向浏览器指示应该下载该文件,如答案 here 中所述和 here .只要您执行请求,Swagger UI 就会提供一个下载文件链接供您下载文件。

headers = {'Content-Disposition': 'attachment; filename="Book.xlsx"'}
return FileResponse(excel_file_path, headers=headers)

要在浏览器中查看文件,可以使用 Content-Disposition header 中的 inline 参数。但是,应该在 FileResponse 中设置正确的 media_type (对于 Excel 文件,请参阅 here )以及 .xlsx(或 .xls)必须是浏览器的已知文件扩展名。

关于python - 如何使用 FastAPI 返回和下载 Excel 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72052908/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com