[菜鸟]用python模拟http表单上传文件的几个困惑

56 views
Skip to first unread message

isa rita

unread,
Jul 1, 2009, 4:23:27 AM7/1/09
to pyth...@googlegroups.com
总公司一个管理系统中需要手动上传文件
因为工作量比较大,决定用python实现批量功能

以下是手动上传时的httpheader信息
POST /func/save_upfile.jsp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Referer: https://192.168.1.10/func/save_upload.jsp
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d9ab418901e6
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 192.168.1.10
Content-Length: 83924
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=E3EB68FFBCECDA19FDF3FB044401FAC0; cod=1050.1100.1200.1400.1500.1600

-----------------------------7d9ab418901e6
Content-Disposition: form-data; name="upfile"; filename="D:\report\0602.xls"
Content-Type: message/rfc822 
  
 file content……

因为之前模拟登录提交内容表单都是用的是 httplib.HTTPSConnection(site)来建立链接
然后conn.request("POST",url,params.headers)来提交数据

于是在模拟上传文件动作时出现了困惑
按照之前的做法把header信息都装在header这个dic里面
先是发现有两个"Content-Type"键,似乎没办法用dic来实现
然后是发现“Content-Length”不post的话服务器反馈错误
提交的话又不知如何确定这个长度

是不是不应该用httplib?还是有什么解决方案呢?请哪位行者给个思路。
鞠躬。

Heroboy

unread,
Jul 1, 2009, 4:25:25 AM7/1/09
to pyth...@googlegroups.com
好像python的https post是有问题的
试试httplib2,urllib3之类的

2009/7/1 isa rita <isall...@gmail.com>

isa rita

unread,
Jul 1, 2009, 5:00:17 AM7/1/09
to pyth...@googlegroups.com
呃?

2009/7/1 Heroboy <yangw...@gmail.com>

isa rita

unread,
Jul 1, 2009, 7:57:56 AM7/1/09
to pyth...@googlegroups.com
那么“Content-Length”应当如何来确定呢?

2009/7/1 isa rita <isall...@gmail.com>

isa rita

unread,
Jul 5, 2009, 10:43:46 PM7/5/09
to pyth...@googlegroups.com
低调的把邮件提上来一点
期待有好心人帮助

张思远

unread,
Jul 5, 2009, 11:22:32 PM7/5/09
to pyth...@googlegroups.com
高调的希望使用gmail web来回列表,线索断了啊

2009/7/6 isa rita <isall...@gmail.com>
低调的把邮件提上来一点
期待有好心人帮助



isa rita

unread,
Jul 6, 2009, 1:42:35 AM7/6/09
to pyth...@googlegroups.com
啊,断了么 我是那gmailweb回的呀。

2009/7/6 张思远 <one...@gmail.com>

黄毅

unread,
Jul 6, 2009, 9:58:26 AM7/6/09
to pyth...@googlegroups.com
有个FormClient 的库,用它做过类似的事情,模拟上传文件,很方便。

2009/7/1 isa rita <isall...@gmail.com>



--
http://codeplayer.blogspot.com/

Jerry

unread,
Jul 6, 2009, 12:48:01 AM7/6/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
上传文件需要有个MultipartPostHandler.py 来处理,有一个conten-typle 应该是multipart/form-
data

On Jul 1, 4:23 pm, isa rita <isalla.r...@gmail.com> wrote:
> 总公司一个管理系统中需要手动上传文件因为工作量比较大,决定用python实现批量功能


>
> 以下是手动上传时的httpheader信息
>
>
>
> > POST /func/save_upfile.jsp HTTP/1.1
>
> > Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
> >> application/x-shockwave-flash, application/msword, application/vnd.ms-excel,
> >> application/vnd.ms-powerpoint, */*
>
> > Referer:https://192.168.1.10/func/save_upload.jsp
>
> > Accept-Language: zh-cn
>
> > Content-Type: multipart/form-data;
> >> boundary=---------------------------7d9ab418901e6
>
> > Accept-Encoding: gzip, deflate
>
> > User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
>
> > Host: 192.168.1.10
>
> > Content-Length: 83924
>
> > Connection: Keep-Alive
>
> > Cache-Control: no-cache
>
> > Cookie: JSESSIONID=E3EB68FFBCECDA19FDF3FB044401FAC0;
> >> cod=1050.1100.1200.1400.1500.1600
>
> >> -----------------------------7d9ab418901e6
>
> > Content-Disposition: form-data; name="upfile";
> >> filename="D:\report\0602.xls"
>
> > Content-Type: message/rfc822
>

> > file content......

Reply all
Reply to author
Forward
0 new messages