Skip to main content
Stack Overflow
  1. About
  2. For Teams

Return to Answer

Found this recipe to post multipart using httplib directly (no external libraries involved)

import httplib
import mimetypes
def post_multipart(host, selector, fields, files):
 content_type, body = encode_multipart_formdata(fields, files)
 h = httplib.HTTP(host)
 h.putrequest('POST', selector)
 h.putheader('content-type', content_type)
 h.putheader('content-length', str(len(body)))
 h.endheaders()
 h.send(body)
 errcode, errmsg, headers = h.getreply()
 return h.file.read()
def encode_multipart_formdata(fields, files):
 LIMIT = '----------lImIt_of_THE_fIle_eW_$'
 CRLF = '\r\n'
 L = []
 for (key, value) in fields:
 L.append('--' + LIMIT)
 L.append('Content-Disposition: form-data; name="%s"' % key)
 L.append('')
 L.append(value)
 for (key, filename, value) in files:
 L.append('--' + LIMIT)
 L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename))
 L.append('Content-Type: %s' % get_content_type(filename))
 L.append('')
 L.append(value)
 L.append('--' + LIMIT + '--')
 L.append('')
 body = CRLF.join(L)
 content_type = 'multipart/form-data; boundary=%s' % BOUNDARYLIMIT
 return content_type, body
def get_content_type(filename):
 return mimetypes.guess_type(filename)[0] or 'application/octet-stream'

Found this recipe to post multipart using httplib directly (no external libraries involved)

import httplib
import mimetypes
def post_multipart(host, selector, fields, files):
 content_type, body = encode_multipart_formdata(fields, files)
 h = httplib.HTTP(host)
 h.putrequest('POST', selector)
 h.putheader('content-type', content_type)
 h.putheader('content-length', str(len(body)))
 h.endheaders()
 h.send(body)
 errcode, errmsg, headers = h.getreply()
 return h.file.read()
def encode_multipart_formdata(fields, files):
 LIMIT = '----------lImIt_of_THE_fIle_eW_$'
 CRLF = '\r\n'
 L = []
 for (key, value) in fields:
 L.append('--' + LIMIT)
 L.append('Content-Disposition: form-data; name="%s"' % key)
 L.append('')
 L.append(value)
 for (key, filename, value) in files:
 L.append('--' + LIMIT)
 L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename))
 L.append('Content-Type: %s' % get_content_type(filename))
 L.append('')
 L.append(value)
 L.append('--' + LIMIT + '--')
 L.append('')
 body = CRLF.join(L)
 content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
 return content_type, body
def get_content_type(filename):
 return mimetypes.guess_type(filename)[0] or 'application/octet-stream'

Found this recipe to post multipart using httplib directly (no external libraries involved)

import httplib
import mimetypes
def post_multipart(host, selector, fields, files):
 content_type, body = encode_multipart_formdata(fields, files)
 h = httplib.HTTP(host)
 h.putrequest('POST', selector)
 h.putheader('content-type', content_type)
 h.putheader('content-length', str(len(body)))
 h.endheaders()
 h.send(body)
 errcode, errmsg, headers = h.getreply()
 return h.file.read()
def encode_multipart_formdata(fields, files):
 LIMIT = '----------lImIt_of_THE_fIle_eW_$'
 CRLF = '\r\n'
 L = []
 for (key, value) in fields:
 L.append('--' + LIMIT)
 L.append('Content-Disposition: form-data; name="%s"' % key)
 L.append('')
 L.append(value)
 for (key, filename, value) in files:
 L.append('--' + LIMIT)
 L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename))
 L.append('Content-Type: %s' % get_content_type(filename))
 L.append('')
 L.append(value)
 L.append('--' + LIMIT + '--')
 L.append('')
 body = CRLF.join(L)
 content_type = 'multipart/form-data; boundary=%s' % LIMIT
 return content_type, body
def get_content_type(filename):
 return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
Source Link
nosklo
  • 224.3k
  • 58
  • 300
  • 299

Found this recipe to post multipart using httplib directly (no external libraries involved)

import httplib
import mimetypes
def post_multipart(host, selector, fields, files):
 content_type, body = encode_multipart_formdata(fields, files)
 h = httplib.HTTP(host)
 h.putrequest('POST', selector)
 h.putheader('content-type', content_type)
 h.putheader('content-length', str(len(body)))
 h.endheaders()
 h.send(body)
 errcode, errmsg, headers = h.getreply()
 return h.file.read()
def encode_multipart_formdata(fields, files):
 LIMIT = '----------lImIt_of_THE_fIle_eW_$'
 CRLF = '\r\n'
 L = []
 for (key, value) in fields:
 L.append('--' + LIMIT)
 L.append('Content-Disposition: form-data; name="%s"' % key)
 L.append('')
 L.append(value)
 for (key, filename, value) in files:
 L.append('--' + LIMIT)
 L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename))
 L.append('Content-Type: %s' % get_content_type(filename))
 L.append('')
 L.append(value)
 L.append('--' + LIMIT + '--')
 L.append('')
 body = CRLF.join(L)
 content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
 return content_type, body
def get_content_type(filename):
 return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
lang-py

AltStyle によって変換されたページ (->オリジナル) /