2

我正在为 mr.migrator 创建一个演示,但遇到了一个烦人的问题,如下所示

# create image
proxy = xmlrpclib.ServerProxy(url) # reset
data = open('screenshot.png').read()
try:
    proxy.invokeFactory('Image', 'screenshot.png')
except xmlrpclib.ProtocolError:
    print sys.exc_info()[1]
except xmlrpclib.Fault:
    print "The id is invalid - it is already in use." # most likely
proxy = xmlrpclib.ServerProxy(url + '/screenshot.png')
proxy.setTitle('This is an image')
try:
    proxy.setImage(data) # XXX this fails
except:
    print sys.exc_info()[1]

此代码应使用图像中的数据填充图像字段,但它始终失败:

<ProtocolError for admin:admin@localhost:8080/Plone/screenshot.png: 500 Internal Server Error>

更糟糕的是,这就是 Zope2 所说的。在前台运行 Plone 时,我没有看到任何回溯或任何其他表明问题的东西。

我的下一步是什么?您可以在此处查看并重现此内容:

我会以“正常”方式执行此操作,将关键字参数传递给 invokeFactory,但XML-RPC 不支持它们

4

1 回答 1

2

这很可能是特殊字符错误。xml-rpc 协议可以使用任何 XML 允许您使用的字符。您应该尝试将图像数据包装在二进制包装器中:

wrappedData = xmlrpclib.Binary(open('screenshot.png').read())

更多信息:

于 2011-10-17T23:46:14.123 回答