0

Google AppEngineSdkを介してFlexアプリケーションからpicasaウェブに画像を挿入しようとしています。Pythonクライアントライブラリの代わりに単純なurlfetchを実行したいと思います。私がフォローしているコード:

    def Insert(self, sessionToken, album_or_uri, title, filename_or_handle):
        result = urlfetch.fetch(url=album_or_uri,
                                method=urlfetch.POST,
                                follow_redirects=True,
                                payload=StringIO(filename_or_handle),
                                headers={'Authorization': 'AuthSub token="' + sessionToken + '"',
                                'Content-Length': str(len(filename_or_handle)),
                                'Content-Type': 'image/jpeg',
                                'Slug': title
                                })

「filename_or_handle」へのデータパスはByteArrayイメージです。ただし、成功しません。何が問題なのかわかりません。ご意見をお聞かせください。ありがとう。

解決策は次のとおりです。

def Insert(self, sessionToken, album_or_uri, title, filename_or_handle):
    image = filename_or_handle.read()
    contentLength = len(image)
    result = urlfetch.fetch(url=album_or_uri,
                method=urlfetch.POST,
                follow_redirects=True,
                payload=image,
                headers={'Authorization': 'AuthSub token="' + sessionToken + '"',
                'Content-Length': contentLength,
                'Content-Type': 'image/jpeg',
                'Slug': title
                })

ありがとう、ジョンソン。

4

1 に答える 1

2

ペイロードは、ファイルのようなオブジェクトではなく、文字列である必要があります。エンコード方法は、呼び出しているAPIによって異なります。APIのドキュメントを参照して、それを判断し、その他のヘッダーなどを設定する必要があります。base64でエンコードする必要はほとんどありません。画像のコンテンツを直接渡すだけです。

それでも問題が解決しない場合は、「成功しなかった」よりも具体的にする必要があります。どのような応答がありますか。

于 2011-04-06T01:28:29.080 に答える