Article View: pl.comp.lang.python
Article #27822multipart/form-data
From: System Egzaminacyjny
Date: Mon, 29 Nov 2010 14:51
Date: Mon, 29 Nov 2010 14:51
81 lines
3725 bytes
3725 bytes
a jak zrobic, zeby dzialo z binariami, ktore nie mieszcza sie w ascii?
Python 3.1.2 (release31-maint, Sep 26 2010, 13:51:01)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from io import BytesIO,StringIO
>>> from cgi import *
[...]
>>> ctt
'multipart/form-data; boundary=ciach-5e821pttrzt92d25qw'
>>> print(repr(dat).replace('\\n','\\n\n'))
b'--ciach-5e821pttrzt92d25qw\r\n
Content-Disposition: form-data; name="a"\r\n
\r\n
b\r\n
--ciach-5e821pttrzt92d25qw\r\n
Content-Disposition: form-data; name="c"\r\n
\r\n
d\r\n
--ciach-5e821pttrzt92d25qw--\r\n
'
>>> bf=BytesIO(dat)
>>> bf.seek(0,0)
0
>>> env={}
>>> env['CONTENT_TYPE']=ctt
>>> bf.seek(0,2)
180
>>> env['CONTENT_LENGTH']=bf.seek(0,2)
>>> env['REQUEST_METHOD']='POST'
>>> env
{'CONTENT_LENGTH': 180, 'REQUEST_METHOD': 'POST', 'CONTENT_TYPE':
'multipart/form-data; boundary=ciach-5e821pttrzt92d25qw'}
>>> bf.seek(0,0);bf.read();bf.seek(0,0)
0
b'--ciach-5e821pttrzt92d25qw\r\nContent-Disposition: form-data;
name="a"\r\n\r\nb\r\n--ciach-5e821pttrzt92d25qw\r\nContent-
Disposition:
form-data; name="c"\r\n\r\nd\r\n--ciach-5e821pttrzt92d25qw--\r\n'
0
>>> dat
b'--ciach-5e821pttrzt92d25qw\r\nContent-Disposition: form-data;
name="a"\r\n\r\nb\r\n--ciach-5e821pttrzt92d25qw\r\nContent-
Disposition:
form-data; name="c"\r\n\r\nd\r\n--ciach-5e821pttrzt92d25qw--\r\n'
>>> sto3=FieldStorage(bf,environ=env)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.1/cgi.py", line 491, in __init__
self.read_multi(environ, keep_blank_values,
strict_parsing)
File "/usr/lib/python3.1/cgi.py", line 611, in
read_multi
parser.feed(self.fp.read())
File "/usr/lib/python3.1/email/feedparser.py", line
156, in
feed
self._input.push(data)
File "/usr/lib/python3.1/email/feedparser.py", line 99,
in
push
data, self._partial = self._partial + data, ''
TypeError: Can't convert 'bytes' object to str implicitly
>>> invld=StringIO(dat.decode())
>>> print(dat.decode())
--ciach-5e821pttrzt92d25qw
Content-Disposition: form-data; name="a"
b
--ciach-5e821pttrzt92d25qw
Content-Disposition: form-data; name="c"
d
--ciach-5e821pttrzt92d25qw--
>>> sto=FieldStorage(invld,environ=env)
>>> sto
FieldStorage(None, None, [FieldStorage('a', None, 'b'),
FieldStorage('c',
None, 'd')])
>>>
Technical Details
Message-ID:
<0323537c-803b-4a27-8d4d-7972a91943cf@l8g2000yqh.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!newsfeed01.sul.t-online.de!t-online.de!proxad.net!feeder1-2.proxad.net!74.125.46.80.MISMATCH!postnews.google.com!l8g2000yqh.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!newsfeed01.sul.t-online.de!t-online.de!proxad.net!feeder1-2.proxad.net!74.125.46.80.MISMATCH!postnews.google.com!l8g2000yqh.googlegroups.com!not-for-mail From: System Egzaminacyjny <projekt.system.egzaminacyjny@gmail.com> Newsgroups: pl.comp.lang.python Subject: multipart/form-data Date: Mon, 29 Nov 2010 06:51:57 -0800 (PST) Organization: http://groups.google.com Lines: 81 Message-ID: <0323537c-803b-4a27-8d4d-7972a91943cf@l8g2000yqh.googlegroups.com> NNTP-Posting-Host: 212.51.216.180 Mime-Version: 1.0 X-Trace: posting.google.com 1291042317 23541 127.0.0.1 (29 Nov 2010 14:51:57 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 29 Nov 2010 14:51:57 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: l8g2000yqh.googlegroups.com; posting-host=212.51.216.180; posting-account=jG-CcAoAAADKKHdnRQPf2YnjyXEQoEDf User-Agent: G2/1.0 X-HTTP-UserAgent: Opera/9.80 (Windows NT 6.1; U; en) Presto/2.7.39 Version/11.00,gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit