我目前在从前端页面上将大文件(大小高达数GB)上传到我的Flask服务器时遇到问题,我发现的可能解决方案是通过request.stream
上传。这是我在[1]中找到的示例代码:
# Upload file as stream to a file.
@app.route("/upload", methods=["POST"])
def upload():
with open("/tmp/output_file", "bw") as f:
chunk_size = 4096
while True:
chunk = request.stream.read(chunk_size)
if len(chunk) == 0:
return
f.write(chunk)
当我使用以下curl命令时,该代码有效:
curl -X POST -T 'sample.zip' 'http://localhost/upload'
但不适用于此:
curl -X POST -F 'file=@sample.zip' 'http://localhost/upload'
此外,我想从前端上传文件,官方教程提供了以下示例[2]:
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form method=post enctype=multipart/form-data>
<input type=file name=file>
<input type=submit value=Upload>
</form>
但是我认为(并经过测试)上面的代码不能满足我通过request.stream
上传大文件的要求。有什么建议或其他解决方法吗?预先感谢!