我有一段代码是这样的,它在本地的工作方式是一样的(不使用任何AppEngine):
bodyParams = { "file" : open( filePath, "rb" ) }
request = urllib2.Request( requestUrl, None, self.buildAuthInfo() )
response = self.getOpener().open(request, bodyParams).read()
我想去掉open
,也就是open( filePath, "rb" )
,因为在Google AppEngine中禁止使用文件(或者非常不方便)。在
为了解决这个问题,我得到了一个base64编码图像文件的httppost数据,并对其进行了解码。我使用以下命令通过cURL发送编码数据:
^{pr2}$encoded
是base64编码的jpg。在
此时,我尝试了两种不同的方法:将解码后的数据放入StringIO
对象,或者直接在bodyParams = { "file" : DECODEDVALUE}
内传递和使用。我希望这两种方法中的任何一种都能正常工作,但是我从目标服务器收到了一个http500错误(我正在执行一个外部API请求)。这是我如何解码值:
img = self.request.get('image')
DECODEDVALUE = MyStringIO(base64.b64decode(img))
我想我有一个与编码和/或二进制模式有关的问题。我想我有一个与编码和/或二进制模式有关的问题。在
我怎样才能摆脱open
和文件对象的使用,转而使用StringIO
、BytesIO
或{
注:仅供澄清,与原问题无关。MyStringIO
是StringIO.StringIO
的子类,添加了__len__
:
class MyStringIO(StringIO.StringIO):
def __len__(self):
return self.len
目前没有回答
相关问题 更多 >
编程相关推荐