我想在/check_base
终结点内使用音频文件。但是,我无法在RedirectResponse
的主体中发送该文件。/check
终结点返回RedirectResponse
,它只接受URL
参数。请帮助我解决此问题。
下面是我的代码:
@router.post("/check")
async def check(
request: Request
):
file = StarletteUploadFile(filename="/home/hello.wav")
redirect_url = app.url_path_for("check_base", **{'audio':file)
response = RedirectResponse(url=redirect_url)
return response
@router.post("/check_base")
async def check_base(
request: Request,
audio: UploadFile = File(...)
):
1条答案
按热度按时间rxztt3cl1#
redirection in the HTTP protocol基本上是一个头文件,即
Location
响应头文件,指示页面要重定向到的URL。也就是说,它并不阻止在响应中提供主体。由于FastAPI/Starlette的RedirectResponse
没有提供相关的content
参数,该参数允许您传递主体,您可以使用3xx
直接返回自定义Response
(redirection)状态码和Location
信头,其中包含要重新导向的URL。如果您要重新导向的要求重复使用方法(如POST
)和原始请求的主体,那么就可以使用307 Temporary Redirect
状态响应码(有关Starlette实现的所有状态码都可以在这里找到)。工作示例:
应用程序.py
模板/索引.html