带有Excel文件的Python响应

时间:2019-01-07 11:02:57

标签: python http aiohttp

我将 api_hour 用于API Web服务器,并尝试使用excel文件响应请求。但这比我想的要困难得多。

如果我使用 nodejs django ,那很好,并且有很多指南。但是 api_hour 不是。以下代码是我的。

headers = {
                'Content-Disposition': 'attachment; filename="excel_file.xlsx"',
                'Access-Control-Allow-Headers': 'status,Origin, X-Requested-With, Content-Type, Cookie, Accept, X-PINGOTHER',
                'Access-Control-Allow-Methods': '*',
                'Accept-Ranges': 'bytes'
            }
            self.responseHeaders = multidict.MultiDict(headers, )

return Response(content_type='application/vnd.openxmlformatsofficedocument.spreadsheetml.sheet',
                status=self.status,
                headers=self.responseHeaders,
                body=response['excel'])

我发现其他的框架(例如 nodejs django ASP.NET Core )使用< strong>拥有自己的封装函数,因此请勿直接将二进制数据(在此代码中为response['excel'])分配给主体。

有什么办法回应文件吗?尤其擅长?谢谢。

1 个答案:

答案 0 :(得分:1)

looks like Responseaiohttp.web.Response

因此,如果您要查询的是StreamResponse类,可以将其流式传输到其中。

或者,如果您需要(尝试)强制客户端将数据下载为文件,请添加一个Content-Disposition标头:

Response(
    ...,
    headers={"Content-Disposition": "attachment; filename=my-excel.xlsx"},
)