File upload 金字塔/塔架:如何在POST请求中检查上传的文件是否完整?

File upload 金字塔/塔架:如何在POST请求中检查上传的文件是否完整?,file-upload,pyramid,wsgi,pylons,File Upload,Pyramid,Wsgi,Pylons,我正在构建一个web工具,允许用户使用web浏览器将PDF上传到服务器。服务器基于Python(粘贴+金字塔) 我现在遇到的问题是:如果用户上传了一个相当大的文件(比如说100 MB),并且在上传完成之前取消了上传,服务器上的处理程序代码仍然会被调用(而不是请求被中止) 问题是当发生这种情况时,request.POST['myfile'].file是不完整的。这实际上意味着,如果我只是将PDF文件写入服务器上的某个位置,它就会被破坏 当我查看服务器的日志时,它显示粘贴服务器中的“断管”异常;但是

我正在构建一个web工具,允许用户使用web浏览器将PDF上传到服务器。服务器基于Python(粘贴+金字塔)

我现在遇到的问题是:如果用户上传了一个相当大的文件(比如说100 MB),并且在上传完成之前取消了上传,服务器上的处理程序代码仍然会被调用(而不是请求被中止)

问题是当发生这种情况时,
request.POST['myfile'].file
是不完整的。这实际上意味着,如果我只是将PDF文件写入服务器上的某个位置,它就会被破坏


当我查看服务器的日志时,它显示粘贴服务器中的“断管”异常;但是,我不知道如何捕获该异常,并使其阻止我的视图/处理程序代码执行和存储不完整的文件。

除非您正在做一些有趣的事情(如跟踪上载进度等),在上载整个文件之前,不应调用您的pylons控制器。

似乎paster HTTP服务器没有正确验证上载的表单数据,只是将请求向下传递到WSGI管道,即使用户关闭了连接(HTTP POST)

我只是通过设置作为反向代理来解决这个问题。这也增加了一些安全优势,因为它可能比paster测试得更好


更新: 我的主要问题是我使用的是
runserver
(manage.py的内置web服务器)。经过反复试验,我们最终使用了WSGI


更具体地说,作为web服务器。静态内容由Nginx直接提供,而动态页面通过uWSGI传输,并由pythonweb应用处理。

显然是这样。我找到了一些解决方法,在HTML表单中的文件输入之后添加了一个隐藏的表单字段,并检查它是否存在。