StreamingResponse FASTAPI 返回奇怪的文件名

Omr*_*. B 2 python-3.x swagger fastapi

我有一个 API,可以将StreamingReponse( https://fastapi.tiangolo.com/advanced/custom-response/?h=fileresponse#streamingresponse ) 输出为 zip/gz。当我下载文件 VIA Swagger 时,我得到一个非常奇怪的名称,例如: application_gz export something=1&something=1&something=Example&archive_type=gz blob https __<ip_address>_aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaaa 所以基本上 - 带有服务器的 ip 地址、uuid、一些名称。无论如何,是否可以将其更改为我决定的内容,或者至少更优雅?谢谢!

Mat*_*ndh 9

您可以使用Content-DispositionHTTP 标头为资源提供替代文件名。由于StreamingResponse是 的子类Response,因此您可以使用headers参数来设置它:

return StreamingResponse(fp, headers={'Content-Disposition': 'attachment; filename="yourfilename.zip"'}
Run Code Online (Sandbox Code Playgroud)

如果您不想强制下载而是让客户端直接显示它(例如对于 PDF 文件),您也可以使用inline代替。attachment