Note that there are some explanatory texts on larger screens.

plurals
  1. POuploading file using urllib2
    primarykey
    data
    text
    <p>I'm new to python and I'm writing a code to upload a file using urllib2 but I can't make it work.</p> <p>Here's the code:</p> <pre><code>class Get(object): handlers = list() def __init__(self,url): self.url = url self.request = urllib2.Request(url) self.request.add_header('User-Agent',"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13") def auth(self,username,password): pass_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() pass_mgr.add_password(None, self.url, username, password) handler = urllib2.HTTPBasicAuthHandler(pass_mgr) self._add_handler(handler) def perform(self): try: opener = self._opener() res = opener.open(self.request) to_return = { 'code': res.code, 'contents': res.read(), 'url': res.geturl(), 'headers': dict(res.info()) } except urllib2.URLError as e: if hasattr(e, 'reason'): print 'Error accessing the server.' print 'Reason: ', e.reason elif hasattr(e, 'code'): print 'The server couldn\'t fulfill the request.' print e else: return to_return def _add_handler(self,handler): self.handlers.append(handler) def _opener(self): return urllib2.build_opener(*self.handlers) class Multipart(object): def __init__(self,url): super(Multipart,self).__init__(url) self.data = list() def perform(self): b = choose_boundary() tmp = "".join(map(lambda x: "--%s \r\n %s" % (b,x), self.data )) tmp += "--%s--\r\n" % b self.request.add_data(tmp) content_type = 'multipart/form-data; boundary=%s' % b self.request.add_unredirected_header('Content-Type', content_type) #self.request.add_header("Content-Type","multipart/form-data, boundary=%s" % b) return super(HTTP.Multipart,self).perform() def set_data(self,data,file = None): for i in data: if file: self.data.append(self._encode_file(i,**data[i])) else: self.data.append(self._encode_text(i,data[i])) def _encode_text(self,key,value): return "Content-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n" % (key, value) def _encode_file(self,key,path,filename=None,mime_type=None): if not exists(path): raise RuntimeError('%s not found' % path) fname = filename or basename(path) mime = mime_type or guess_type(path)[0] or 'application/octet-stream' size = getsize(path) content = "" with open(path,'rb') as fobj: content = fobj.read(size) converted_text = "Content-Disposition: form-data; name=\"%s\"; filename=\"%s\"\r\n" % (key,fname) converted_text += "Content-Transfer-Encoding: binary\r\n" converted_text += "Content-Type: %s \r\n" % mime converted_text += "Content-Length: %s \r\n" % size converted_text += "\r\n %s \r\n" % content return converted_text </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload