Python 3.x FastAPI上载大于100kb的文件时出错

Python 3.x FastAPI上载大于100kb的文件时出错,python-3.x,asynchronous,fastapi,Python 3.x,Asynchronous,Fastapi,我正在尝试创建用于上载文件的端点。但是,如果文件大于100Kb,我会收到一个错误400错误请求。我的猜测是它没有足够的时间上传文件 我的函数的代码如下所示: import uvicorn from fastapi import FastAPI, File, UploadFile import pathlib app = FastAPI(title='Tool', description='Tool descr', version='0.0.1') uploads = 'uploads' up

我正在尝试创建用于上载文件的端点。但是,如果文件大于100Kb,我会收到一个错误400错误请求。我的猜测是它没有足够的时间上传文件

我的函数的代码如下所示:

import uvicorn
from fastapi import FastAPI, File, UploadFile
import pathlib

app = FastAPI(title='Tool', description='Tool descr', version='0.0.1')

uploads = 'uploads'
uploads_dir = pathlib.Path(os.getcwd(), uploads)

@app.post('/api/upload/')
async def upload_file(file: UploadFile=File(...)):
    """
    Upload the file to be processed.
    """
    print(file)
    async with aiofiles.open(file.file, 'rb') as fin:
        exfile = fin.read() 
    file_name = pathlib.Path(uploads_dir, file.filename)
    async with aiofiles.open(f'{file_name}', 'wb') as f:
        await f.write(exfile)
    return {'filename': file.filename, 
                'content-type': file.content_type}

if __name__ == '__main__':
    uvicorn.run('main:app', host='127.0.0.1', port=5003, log_level='info')   
因此,如果是一个文本文件,或者如果是一个二进制文件,服务器会给我一个错误的请求答案,并在索引2处显示“未在边界末尾找到CR”,fo rexample

邮递员错误: { “详细信息”:“分析正文时出错” }

服务器返回的错误基本上如下所示:

Did not find boundary character 145 at index 2
[32mINFO[0m:     127.0.0.1:58032 - "[1mPOST /api/upload/ HTTP/1.1[0m" [31m400 Bad Request[0m
[33mWARNING[0m:  Invalid HTTP request received.
[32mINFO[0m:     127.0.0.1:58033 - "[1mPOST /api/upload HTTP/1.1[0m" [33m307 Temporary Redirect[0m
<starlette.datastructures.UploadFile object at 0x000001CCCF62AE80>
[32mINFO[0m:     127.0.0.1:58033 - "[1mPOST /api/upload/ HTTP/1.1[0m" [32m200 OK[0m
[32mINFO[0m:     127.0.0.1:58156 - "[1mPOST /api/upload HTTP/1.1[0m" [33m307 Temporary Redirect[0m
<starlette.datastructures.UploadFile object at 0x000001CCCF62E7F0>
[32mINFO[0m:     127.0.0.1:58156 - "[1mPOST /api/upload/ HTTP/1.1[0m" [32m200 OK[0m
[32mINFO[0m:     127.0.0.1:58190 - "[1mPOST /api/upload HTTP/1.1[0m" [33m307 Temporary Redirect[0m
Did not find CR at end of boundary (54)
[32mINFO[0m:     127.0.0.1:58191 - "[1mPOST /api/upload/ HTTP/1.1[0m" [31m400 Bad Request[0m
在索引2处未找到边界字符145
[32mINFO[0m:127.0.0.1:58032-“[1mPOST/api/upload/HTTP/1.1[0m”[31m400错误请求[0m
[33M警告[0m:接收到无效的HTTP请求。
[32mINFO[0m:127.0.0.1:58033-“[1mPOST/api/upload HTTP/1.1[0m”[33m307临时重定向[0m
[32mINFO[0m:127.0.0.1:58033-“[1mPOST/api/upload/HTTP/1.1[0m”[32m200正常[0m
[32mINFO[0m:127.0.0.1:58156-“[1mPOST/api/upload HTTP/1.1[0m”[33m307临时重定向[0m
[32mINFO[0m:127.0.0.1:58156-“[1mPOST/api/upload/HTTP/1.1[0m”[32m200正常[0m
[32mINFO[0m:127.0.0.1:58190-“[1mPOST/api/upload HTTP/1.1[0m”[33m307临时重定向[0m
在边界末端未找到CR(54)
[32mINFO[0m:127.0.0.1:58191-“[1mPOST/api/upload/HTTP/1.1[0m”[31m400错误请求[0m

这是一些请求,一些请求成功(文件大小约为50k),其他请求未作为“错误请求”处理。

将完整的错误回溯添加到操作系统。您找到解决方案了吗?是的,这是邮递员中的一个错误。我为这段代码创建了一个客户端,它成功了。我忘了更新它。