0

我在后端处理了一个 FastAPI / Starlette 表单,其中包含一个捕获数据的函数。

用户上传一个文件,当它保存在服务器(或我的本地机器上)时,页面崩溃,我必须等待几十秒才能刷新。

/upload 页面上的 HTML 表单:

<form action="/upload" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <input type="file" class="form-control-file" name='upload_file' id="upload_file">
        <button id="upload" type='submit' class="btn btn-primary">Upload</button>
</form>

Python后端:

@app.post("/upload")
async def handle_form(request: Request,
                      upload_file: UploadFile = File(...)):

    Path("/app/uploads").mkdir(parents=True, exist_ok=True)
    with open(f"app/uploads/{upload_file.filename}", "wb+") as file_object:
        file_object.write(upload_file.file.read())

    return templates.TemplateResponse('upload.html', context={'request': request})

当我点击我的上传按钮时,该文件需要几秒钟/几分钟才能在我的后端,在正确的目录 ( app/uploads) 中创建。当它这样做时,在浏览器上,页面停止响应并被替换为:

这是一个 Edge 屏幕截图,带有一条消息,上面写着“抱歉,无法访问此页面”。

边缘错误:抱歉,无法显示页面

当然,其他浏览器,尤其是基于 Chromium 的浏览器,具有完全相同的行为。

我必须等待几分钟才能刷新页面并查看它是否有效。

我能做些什么来规避这种情况?

如何等到文件上传完成后再刷新 UI?

4

0 回答 0