[Chicago] posting html
Rob Kapteyn
robkapteyn at gmail.com
Tue Aug 25 19:18:20 CEST 2009
Carl:
I should have read all of the commentary on that recipe before posting.
This recipe looks better:
http://code.activestate.com/recipes/576422/
-Rob
On Aug 25, 2009, at 12:11 PM, Rob Kapteyn wrote:
> Here is an ActiveState recipe that might work:
>
> http://code.activestate.com/recipes/146306/
>
> I haven't tried it, but the code looks clean ;-)
> Good luck, and thanks for all of your work posting our meetings on
> blip.tv !
>
> -Rob
>
>
> On Aug 25, 2009, at 11:25 AM, Carl Karsten wrote:
>
>> I am hoping there is a module that does what the 2 funcs below do
>> (both do the same thing.) The first shells out to curl, the 2nd
>> blows
>> up on big files because of data.append(open(filename.read()))
>>
>> I recoded the 2nd, but because I need to do
>> h.putheader("content-length", len(data)) I need to calc the len of
>> all
>> the strings, then add the length of the files. doable, but some ugly
>> looking code. I call it python-ick.
>>
>> I am betting there is something in twisted, but this will be example
>> code so would prefer to use only standard lib stuff. but "to use
>> this
>> install twisted" isn't out of the question.
>>
>> def CurlUpload(BLIPURL, fields, file):
>> cline = "curl -F file=@\"%s\" " % (file)
>> for field_name, value in fields.iteritems():
>> cline = "%s -F %s=%s " % (cline, field_name, re.escape(value))
>> cline = "%s %s" % (cline, BLIPURL)
>> result = os.popen(cline, "r")
>> return result.read()
>>
>> def PostMultipart(url, fields, files):
>> """@brief Send multi-part HTTP POST request
>>
>> @param url POST URL
>> @param fields A dict of {field-name: value}
>> @param files A list of [(field-name, filename)]
>> @return Status, reason, response (see
>> httplib.HTTPConnection.getresponse())
>> """
>> content_type = 'multipart/form-data; boundary=%s' %
>> MULTIPART_BOUNDARY
>> data = []
>> for field_name, value in fields.iteritems():
>> data.append('--' + MULTIPART_BOUNDARY)
>> data.append('Content-Disposition: form-data; name="%s"' %
>> field_name)
>> data.append('')
>> data.append(value)
>> for (field_name, filename) in files:
>> data.append('--' + MULTIPART_BOUNDARY)
>> data.append('Content-Disposition: form-data; name="%s";
>> filename="%s"'
>> % (field_name, filename))
>> data.append('Content-Type: %s' % GetMimeType(filename))
>> data.append('')
>> data.append(open(filename).read())
>> data.append('--' + MULTIPART_BOUNDARY + '--')
>> data.append('')
>> data = "\r\n".join(data)
>>
>> host, selector = urlparts = urlparse.urlsplit(url)[1:3]
>> h = httplib.HTTPConnection(host)
>> h.putrequest("POST", selector)
>> h.putheader("content-type", content_type)
>> h.putheader("content-length", len(data))
>> h.endheaders()
>> h.send(data)
>> response = h.getresponse()
>> return response.status, response.reason, response.read()
>>
>>
>>
>> --
>> Carl K
>> _______________________________________________
>> Chicago mailing list
>> Chicago at python.org
>> http://mail.python.org/mailman/listinfo/chicago
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/chicago/attachments/20090825/c013c950/attachment-0001.htm>
More information about the Chicago
mailing list