0

次のコードでファイルをアップロードしようとしています。

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

encode_multipart_formdata()はhttp://code.activestate.com/recipes/146306/から取得されます

メソッドを実行すると、完了するまでに長い時間がかかります。実際、それが終わるとは思いません。ネットワークモニターでデータが転送されているのがわかりますが、メソッドは終了しません...

何故ですか?どこかにタイムアウトを設定する必要がありますか?

4

1 に答える 1

1

content-lengthリクエストの本文をサーバーに送信していないようです。そのため、バイトが到着するのを待っている可能性があります。

よろしいですか

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

読むべきではない

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

?

于 2011-03-24T11:06:36.257 に答える