使用twitter api和python上传个人资料图片

时间:2012-07-10 21:11:44

标签: python api twitter

我想使用html表单从我的硬盘上传图像:

Image file: <input name="imageupload" id="imageupload" type="file" />

然后我将其上传到twitter:

image=self.request.get('imageupload')
image2=base64.b64encode(image)
twitapi.Update_profile_image(image=image2)

给出twitapi.Update_profile_image:

def Update_profile_image(self,image):
    if not self._oauth_consumer:
        raise TwitterError("The twitter.Api instance must be authenticated.")

    url = '%s/account/update_profile_image.json' % (self.base_url)
    data = {'image':image}

    json = self._FetchUrl(url, post_data=data)
    data = self._ParseAndCheckTwitter(json)
    return data

给出来自twitter-api的_FetchUrl

我总是得到

TwitterError: There was a problem with your picture. Probably too big.

它出现的任何想法?谢谢!

4 个答案:

答案 0 :(得分:2)

要通过表单正确提交图像,您必须包含

enctype="multipart/form-data" 

例如

<form  enctype="multipart/form-data" action='/' method="POST">

答案 1 :(得分:2)

Twitter RESTful API Document不正确 请勿编码 image binarybase64! 从您的来源中删除base64编码部分。

如果您将image binary编码为base64字符串,twitter api说

  

“......你的照片可能太大了。(...)(代码131)”

答案 2 :(得分:1)

根据the documentation,您的图片:

Must be a valid GIF, JPG, or PNG image of less than 700 kilobytes in size.

因此,请确保您的图片符合这些限制条件。也许您需要缩小图像,或将其转换为其他格式。

如果这不起作用,请尝试上传另一个符合上述限制的非常小的图像。至少您可以验证问题是否与您正在使用的特定图像有关。

答案 3 :(得分:1)

您通过表单上传接收的图片可能已经是base64编码的吗?

然后您正在应用双重编码,这可能会混淆Twitter服务器端的验证,因为它无法在您上传的文件中找到典型的图像标题。