python编写请求参数带文件_python:使用文件上传和其他参数解析HTTP POST请求

任务很简单:在服务器端(python)接受HTTP POST,该POST包含上载的文件和更多表单参数.

我正在尝试实现上传进度指示器,因此我需要能够逐块读取文件内容.

我发现的所有方法都基于cgi.FieldStorage,它只能以某种方式允许我完整地获取文件(在内存中,这本身就是一场灾难).有人建议重新定义FieldStorage.make_file method(),这似乎破坏了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--

有谁知道是否有任何Python库可以可靠地解析此内容?

还是应该手动执行此操作? (就是Python 2.5)

谢谢.

解决方法:

如您所建议,我将(并且之前已经做过)重写FieldStorage对象的make_file方法.只需返回一个对象,该对象具有一个write方法,该方法既可以接受数据(到文件或内存中,也可以拥有您所拥有的数据),还可以跟踪进度指示器已收到多少.

这样,您还可以访问文件的长度(由客户端提供),文件名以及在其下发布的密钥.

为什么这似乎会破坏您的CGI实施?

另一个选择是在浏览器中使用Flash上​​载器进行进度跟踪(想到YUI Uploader和SWFUpload),并完全跳过在服务器上对其进行跟踪.然后,您不必具有一系列AJAX请求即可获得进度.

标签:upload,wsgi,python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值