gno*_*sis 5 python upload wsgi
任务很简单:在服务器端 (python) 接受包含上传文件和更多表单参数的 HTTP POST。
我正在尝试实现上传进度指示器,因此我需要能够逐块读取文件内容。
我发现的所有方法都基于 cgi.FieldStorage,它以某种方式只允许我获取整个文件(在内存中,这本身就是一场灾难)。有些人建议重新定义 FieldStorage.make_file 方法(),这似乎破坏了 cgi 实现(奇怪...)。
我目前能够逐块读取整个 wsgi 输入到文件系统,从而产生以下数据:
-----------------------------9514143097616
Content-Disposition: form-data; name="myfile"; filename="inbound_marketing_cartoon_ebook.pdf"
Content-Type: application/pdf
... 1.5 MB of PDF data
-----------------------------9514143097616
Content-Disposition: form-data; name="tid"
194
-----------------------------9514143097616--
Run Code Online (Sandbox Code Playgroud)
有谁知道是否有任何 Python 库可以可靠地解析这个东西?还是我应该手动执行此操作?(即 Python 2.5)
谢谢。
正如您所建议的,我会(并且之前已经这样做过)覆盖对象make_file的方法FieldStorage。只需返回一个对象,该对象具有一个write既接受数据(进入文件或内存或其他什么)的方法,又跟踪进度指示器已收到的数据量。
通过这种方式,您还可以访问文件的长度(由客户端提供)、文件名以及发布该文件的密钥。
为什么这似乎破坏了您的 CGI 实现?
另一种选择是使用 Flash 上传器(例如YUI Uploader和SWFUpload)在浏览器中进行进度跟踪,并完全跳过在服务器上进行跟踪。那么您就不必通过一系列 AJAX 请求来获取进度。
| 归档时间: |
|
| 查看次数: |
2930 次 |
| 最近记录: |