0

I'm trying to upload files with the following code:

url = "/folder/sub/interface?"
connection = httplib.HTTPConnection('www.mydomain.com')

def sendUpload(self):
    fields = []
    file1 = ['file1', '/home/me/Desktop/sometextfile.txt']
    f = open(file1[1], 'r')
    file1.append(f.read())
    files = [file1]
    content_type, body = self.encode_multipart_formdata(fields, files)

    myheaders['content-type'] = content_type
    myheaders['content-length'] = str(len(body))

    upload_data = urllib.urlencode({'command':'upload'})
    self.connection.request("POST", self.url + upload_data, {}, myheaders)
    response = self.connection.getresponse()
    if response.status == 200:
        data = response.read()
        self.connection.close()
        print data

The encode_multipart_formdata() comes from http://code.activestate.com/recipes/146306/

When I execute the method it takes a long time to complete. In fact, I don't think it will end.. On the network monitor I see that data is transferred, but the method doesn't end...

Why is that? Should I set a timeout somewhere?

taper
  • 9,236
  • 5
  • 28
  • 29

1 Answers1

1

You don't seem to be sending the body of your request to the server, so it's probably stuck waiting for content-length bytes to arrive, which they never do.

Are you sure that

self.connection.request("POST", self.url + upload_data, {}, myheaders)

shouldn't read

self.connection.request("POST", self.url + upload_data, body, myheaders)

?

NPE
  • 486,780
  • 108
  • 951
  • 1,012