multipart/form-data
пока получилось это сделать только для питона 2.7 с библиотекой poster
http://pypi.python.org/pypi/poster/
но мне надо для питона 3.2
в постере есть какой-то хитрый класс multipart_yielder, который возвращает итератор
<poster.encode.multipart_yielder object at 0x930cf4c>
этот итератор можно передать в request urllib-а:
datagen, headers = multipart_encode({"image1": open("image.png", "rb")})
response = opener.open(request, datagen, headers)
исправил кучу ошибок, но последнюю не знаю как исправить:
Traceback (most recent call last):
File "/home/tmp/poster-0.8.0/test.py", line 20, in <module>
response = opener.open(request, datagen, headers)
File "/usr/local/lib/python3.2/urllib/request.py", line 366, in open
response = self._open(req, data)
File "/usr/local/lib/python3.2/urllib/request.py", line 384, in _open
'_open', req)
File "/usr/local/lib/python3.2/urllib/request.py", line 344, in _call_chain
result = func(*args)
File "/usr/local/lib/python3.2/urllib/request.py", line 1140, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "/usr/local/lib/python3.2/urllib/request.py", line 1122, in do_open
h.request(req.get_method(), req.selector, req.data, headers)
File "/usr/local/lib/python3.2/http/client.py", line 964, in request
self._send_request(method, url, body, headers)
File "/usr/local/lib/python3.2/http/client.py", line 1002, in _send_request
self.endheaders(body)
File "/usr/local/lib/python3.2/http/client.py", line 960, in endheaders
self._send_output(message_body)
File "/usr/local/lib/python3.2/http/client.py", line 805, in _send_output
self.send(msg)
File "/usr/local/lib/python3.2/http/client.py", line 743, in send
self.connect()
File "/usr/local/lib/python3.2/http/client.py", line 721, in connect
self.timeout, self.source_address)
File "/usr/local/lib/python3.2/socket.py", line 386, in create_connection
sock.settimeout(timeout)
TypeError: a float is required
есть ли нормальный способ отправить файл на сервер с помощью urllib в питон3.2?