Forgot the attachment… twice. Yay for new email clients I'm not used to
import random
import StringIO
from twisted.internet import reactor
from twisted.web import client, http_headers
def _encodeForm(a, b, f):
"""
Encodes two form values and a fake image file as multipart form encoding.
"""
randomChars = [str(random.randrange(10)) for _ in xrange(28)]
boundary = "-----------------------------" + "".join(randomChars)
lines = []
def add(name, content, isImage=False):
header = "Content-Disposition: form-data; name={}".format(name)
if isImage:
header += "; filename=img.jpeg"
header += "\r\nContent-Type: image/jpeg"
lines.extend(["--" + boundary, header, "", content, ""])
add("a", a)
add("b", b)
add("f", f.read(), isImage=True)
lines.extend(["--" + boundary + "--", ""])
return boundary, "\r\n".join(lines)
def send():
f = open("1x1.jpg")
boundary, body = _encodeForm("1", "2", f)
producer = client.FileBodyProducer(StringIO.StringIO(body))
headers = http_headers.Headers()
contentType = "multipart/form-data; boundary={}".format(boundary)
headers.setRawHeaders("Content-Type", [contentType])
agent = client.Agent(reactor)
d = agent.request("POST", "http://localhost:8080", headers, producer)
return d
if __name__ == "__main__":
d = send()
d.addCallback(lambda _result: reactor.stop())
reactor.run()
cheers
lvh
On 07 Jul 2012, at 16:57, Laurens Van Houtven wrote:
> With a lot of help from idnar, the issue is resolved!
>
> There were a few red herrings that ended up cleaning my code a lot, but
> eventually it ended up boiling down to my MIME generating code simply being
> busted. Fixed version attached.
>
> Apparently this also highlighted a minor issue in twisted.web with the wrong
> header being preferred, but I'll leave that up to the expert :)
>
>
> cheers
> lvh
>
_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python