🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27822

multipart/form-data

#27822
From: System Egzaminacyjny
Date: Mon, 29 Nov 2010 14:51
81 lines
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-mail

Show 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