通过前端的request.stream将大数据上传到Flask服务器

时间:2018-08-30 03:27:26

标签: flask upload frontend

问题描述

我目前在从前端页面上将大文件(大小高达数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上传大文件的要求。有什么建议或其他解决方法吗?预先感谢!

参考

  1. Flask File Streaming
  2. Flask - Uploading Files

0 个答案:

没有答案