自信,努力,坚持

python post上传文件方法

上一篇 / 下一篇  2011-08-17 17:24:07 / 个人分类:python

http://atlee.ca/software/poster/poster.encode.html
http://zh-cn.w3support.net/index.php?db=so&id=680305
http://oldj.net/article/python-upload-file-via-form-post/
http://pypi.python.org/pypi/poster/
提供的一个接口方法需要上传数据,类型为enctype类型为:multipart/form-data
实现代码如下:
def getUrllib2(self, upload = False, redirect = False):
        global _cookieProcessor
        if upload:
            handlers = poster.streaminghttp.get_handlers()
        else:
            handlers = []
        err = HTTPError()
        handlers.append(err) 
        handlers.append(_cookieProcessor)
#        handlers.append(Urllib2RedirectHandle)
#        if not redirect:
#            handlers.append(Urllib2RedirectHandle)
       
        try:
            pener = urllib2.build_opener(*handlers)
        except Exception, e:
            print err.getErrorMsg()
            raise e
#            return None
        return opener

    def sendMultipartPost(self, url, params, files):
        posterParams = []
        for key in params:
            value = params[key]
            print value
            posterParams.append(poster.encode.MultipartParam(key, value))
           
        for key in files:
            value = files[key]
            print value
            posterParams.append(poster.encode.MultipartParam.from_file(key, value))
        
        datagen, headers = poster.encode.multipart_encode(posterParams)
        if headers is None:
            headers = {}
           
        request = urllib2.Request(url, datagen, headers)        

        try:
            pener = self.getUrllib2(True, False)
            response = opener.open(request)
        except urllib2.HTTPError, e:
#            getLogger().error('sendMultipartPost error:%d,url=%s' % (e.code, url))
            print e, url, headers
            return None
       
        return response

TAG:

 

评分:0

我来说两句

Open Toolbar