Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Tornado从HTML5表单上传大文件>;4.1_Javascript_Html_Python 3.6_Tornado_Large File Upload - Fatal编程技术网

Javascript 如何使用Tornado从HTML5表单上传大文件>;4.1

Javascript 如何使用Tornado从HTML5表单上传大文件>;4.1,javascript,html,python-3.6,tornado,large-file-upload,Javascript,Html,Python 3.6,Tornado,Large File Upload,我正在使用tornado 6.0.3创建一个应用程序,需要使用html表单上传大文件。如何流式处理文件,例如使用@stream\u request\u body装饰器来完成此操作 我创建了一个简单的表单,如下所示: <form action="{{ reverse_url('upload') }}" method="post" enctype="multipart/form-data"> {% module xsrf_form_html() %} <input cl

我正在使用tornado 6.0.3创建一个应用程序,需要使用html表单上传大文件。如何流式处理文件,例如使用
@stream\u request\u body
装饰器来完成此操作

我创建了一个简单的表单,如下所示:

<form action="{{ reverse_url('upload') }}" method="post" enctype="multipart/form-data">
   {% module xsrf_form_html() %}
   <input class="file" name="filesToUpload" id="filesToUpload" type="file" multiple/>
   <input type="submit" name="submit" value="Upload File(s)"/>
</form>
这是可行的,但我需要能够处理巨大的文件,这样我就不能在内存中加载文件。因此,我尝试使用
@stream\u request\u body
装饰器,并找到了(除其他外)解决方案,但在添加
@stream\u request\u body
后,我得到了以下错误:

Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/tornado/web.py", line 1674, in _execute self.check_xsrf_cookie() File "/usr/local/lib/python3.6/dist-packages/tornado/web.py", line 1516, in check_xsrf_cookie raise HTTPError(403, "'_xsrf' argument missing from POST") tornado.web.HTTPError: HTTP 403: Forbidden ('_xsrf' argument missing from POST) 回溯(最近一次呼叫最后一次): 文件“/usr/local/lib/python3.6/dist-packages/tornado/web.py”,第1674行,在 self.check_xsrf_cookie() 文件“/usr/local/lib/python3.6/dist packages/tornado/web.py”,第1516行,在check_xsrf_cookie中 raise HTTPError(403,“\u xsrf”参数在POST中丢失”) tornado.web.HTTPError:HTTP 403:禁止(POST中缺少“”xsrf“”参数) 然后,我发现我的tornado版本不支持流式多部分上传,因此我(因为我使用的是tornado 6.0.3版)需要将表单方法从POST更改为PUT,并通过HTTP头传递XSRF令牌。然而,html表单不支持PUT方法,因此我想我需要在某种程度上使用JavaScript来实现这一点,但我没有太多使用JavaScript,也没有找到任何关于如何实现这一点的帮助


因此,我的问题是:

  • 如何使用最新版本的tornado,使用PUT和(或任何其他可行的)JavaScript从表单中传输文件
  • 如何通过HTTP头传递XSRF令牌?我还没有找到任何关于如何做到这一点的实际代码示例 提前谢谢你