通过urlfetch在Python Google App Engine中向Picasa插入图片

0 投票
1 回答
569 浏览
提问于 2025-04-16 15:08

我想通过Google App Engine SDK,把一个Flex应用中的图片插入到Picasa网页上。我想用简单的urlfetch,而不是使用Python的客户端库。以下是我写的代码:

    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
                })

谢谢你,Johnson。

1 个回答

2

你传递的数据应该是一个字符串,而不是像文件那样的对象。具体应该怎么编码,取决于你正在调用的API(应用程序接口)——你可以查看API的文档来了解这些信息,以及你需要设置的其他头部信息等。通常情况下,你不需要把它进行base64编码——直接把图片的内容传过去就可以了。

如果你还是遇到问题,那就需要更具体一点,而不是简单地说“没有成功”——你收到的是什么样的反馈呢?

撰写回答