我想使用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.
它出现的任何想法?谢谢!
答案 0 :(得分:2)
要通过表单正确提交图像,您必须包含
enctype="multipart/form-data"
例如
<form enctype="multipart/form-data" action='/' method="POST">
答案 1 :(得分:2)
Twitter RESTful API Document
不正确
请勿编码 image binary
到base64
!
从您的来源中删除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服务器端的验证,因为它无法在您上传的文件中找到典型的图像标题。