当我使用api下载文件时,我会收到损坏的数据:
file_name = 'download'
prepared_df = pd.DataFrame.from_dict(data)
path_to_excel = os.path.join(dir_to_download, file_name)
writer = pd.ExcelWriter(path_to_excel, engine='xlsxwriter')
prepared_df.to_excel(writer, sheet_name="Sheet1", index=False)
writer.save()
writer.close()使用FileResponse下载文件
FileResponse(path=path_to_excel, filename=file_name, media_type='text/xlsx')发布于 2021-03-24 10:04:09
不需要在本地保存文件,您可以在StringIO/BytesIO的帮助下动态保存它。就我个人而言,我建议您在这种情况下使用CSV而不是XLSX格式,这样会工作得更快。
from io import BytesIO
import pandas as pd
import uvicorn
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
app = FastAPI()
@app.get("/file", response_description='xlsx')
async def xlsx_file():
frame = pd.read_excel("filename.xlsx")
output = BytesIO()
with pd.ExcelWriter(output) as writer:
frame.to_excel(writer)
headers = {
'Content-Disposition': 'attachment; filename="example.xlsx"'
}
return StreamingResponse(iter([output.getvalue()]), headers=headers)
if __name__ == '__main__':
uvicorn.run(app)https://stackoverflow.com/questions/66773428
复制相似问题