使用Sanic处理超大文件

时间:2018-08-07 17:33:54

标签: file-upload stream large-file-upload sanic

我想上传一个大文件(> 1GB)(由客户端以html格式发送),并使用sanic将其存储在我的服务器中。
我不能使用request.files参数,因为它将导致大文件的内存问题,因此我尝试将streaming与以下代码一起使用:

@app.post('/stream', stream=True)
async def handler(request):
    f = open('./upload', 'wb')
    times = 0
    while True:
        body = await request.stream.get()
        if body is None:
            break
        f.write(body)
    f.close()

使用此代码,因为流不仅包含文件内容,而且具有其他表单参数及其值,因此存储的文件无效。
所以我的问题是如何仅从整个流中分离上载文件的内容,以及如何从此流中获取其他表单参数的值。

0 个答案:

没有答案