首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用@stream_request_body上传tornado中的大文件

使用@stream_request_body上传tornado中的大文件
EN

Stack Overflow用户
提问于 2020-01-23 14:23:22
回答 1查看 454关注 0票数 0

@stream_request_body类StreamHandler(RequestHandler):定义post(self):self.temp_file.close()

代码语言:javascript
运行
复制
def prepare(self):

     max_buffer_size = 4 * 1024**3 # 4GB
     self.request.connection.set_max_body_size(max_buffer_size)
     self.temp_file = open("test.txt","w")


def data_received(self, chunk):
    self.temp_file.write(chunk)

使用上面的代码,我可以上传原始数据形式的文件,如下所示

--6552719992117258671800152707 Content-Disposition:表单数据;name="dest“

csv --6552719992117258671800152707 Content-Disposition:表单-数据;name=“载体”

bandwidth --6552719992117258671800152707 Content-Disposition: form-data;name="file1";filename="test.csv“Content-Type:文本/csv

上传文件的内容如下。

如何从文件中获取解析出的请求参数,并对上传的文件进行数据分离?有没有其他方法可以在tornado中上传大文件(大约2 GB

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 02:35:21

这是HTML表单使用的多部分协议。Tornado目前只能在一次看到所有数据的情况下才能解析它,而不是在流式上传中。有一个第三方库应该能够处理这个问题:https://github.com/siddhantgoel/streaming-form-data。有关更多信息,请参阅本期:https://github.com/tornadoweb/tornado/issues/1842

如果您控制客户端,那么使用普通的HTTP PUT而不是HTML multipart form协议可能会更简单。这不需要在服务器端进行任何特殊处理

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59872661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档