2012-05-11 3 views
0

MIMEプロセスを実現するために、multipart_encodeを使用してファイルをアップロードしようとしています。しかし、私は次のエラーAttributeError: multipart_yielder instance has no attribute '__len__'を満たしました。以下は私のアプローチですが、誰かが私にいくつかの提案を与えることができれば本当に感謝しています。multipart_encode(ポスターライブラリ)を使用している問題

url = "https://pi-user-files.s3-external-1.amazonaws.com/"   
post_data = {} 
#data is a dict 
post_data['AWSAccessKeyId']=(data['ticket']['AWSAccessKeyId']) 
post_data['success_action_redirect']=(data['ticket']['success_action_redirect']) 
post_data['acl']=(data['ticket']['acl']) 
post_data['key']=(data['ticket']['key']) 
post_data['signature']=(data['ticket']['signature']) 
post_data['policy']=(data['ticket']['policy']) 
post_data['Content-Type']=(data['ticket']['Content-Type']) 

#I would like to upload a text file "new 2" 
post_data['file']=open("new 2.txt", "rb") 

datagen, headers = multipart_encode(post_data) 
request2 = urllib2.Request(url, datagen, headers) 
result = urllib2.urlopen(request2) 

答えて

3

あなたはMultipartParamオブジェクト、送信ファイル要求を作成するためのコード例で、他のパラメータラップする必要があるファイルに送信する場合:また

from poster.encode import multipart_encode, MultipartParam 
import urllib2 

def postFileRequest(url, paramName, fileObj, additionalHeaders={}, additionalParams={}): 
    items = [] 
    #wrap post parameters 
    for name, value in additionalParams.items(): 
     items.append(MultipartParam(name, value)) 
    #add file 
    items.append(MultipartParam.from_file(paramName, fileObj)) 
    datagen, headers = multipart_encode(items) 
    #add headers 
    for item, value in additionalHeaders.iteritems(): 
     headers[item] = value 
    return urllib2.Request(url, datagen, headers) 

を、私はあなたが一度register_openers()を実行すべきだと思います始まり。あなたが見つけることができるいくつかの詳細docs

関連する問題