3

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

4 に答える 4

2

Twitter RESTful API Documentは正しくありません。にエンコード
ないでください。ソースからエンコード セクションを削除します。 image binarybase64base64

文字列にエンコードするimage binaryと、 api は言うbase64twitter

「...あなたの写真はおそらく大きすぎるという問題がありました。(...) (コード 131)」

于 2012-11-16T07:35:34.803 に答える
2

フォームを介して画像を正しく送信するには、含める必要があります

enctype="multipart/form-data" 

例えば

<form  enctype="multipart/form-data" action='/' method="POST">
于 2012-07-15T09:38:47.753 に答える
1

おそらく、フォームのアップロードを介して受信している画像は、すでにbase64でエンコードされていますか?

次に、アップロードされたファイルで一般的な画像ヘッダーを見つけることができないため、Twitterサーバー側での検証を混乱させる可能性のあるダブルエンコーディングを適用しています。

于 2012-07-13T17:01:52.550 に答える
1

ドキュメントによると、あなたの画像:

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

したがって、画像がこれらの制約内に収まるようにしてください。画像を縮小するか、別の形式に変換する必要があるかもしれません。

それでも問題が解決しない場合は、上記の制約を満たす別の非常に小さな画像をアップロードしてみてください。少なくとも、使用している特定の画像に問題があるかどうかを確認できます。

于 2012-07-12T21:56:38.717 に答える