无法通过 xmlrpc 将图像上传到 Plone 2.5

发布于 2024-12-11 12:49:16 字数 1033 浏览 0 评论 0原文

基于Zope2 XML-RPC之间的不良交互的答案和 AT Image mutator? 我希望能够使用 Plone 2.5 执行以下操作:

proxy = xmlrpclib.ServerProxy('http://admin:admin@localhost:8080/Plone/screenshot.png', verbose=True)
wrappedData = xmlrpclib.Binary(open(filename).read())
proxy.setImage(wrappedData)

相反,我得到了一个回溯(来自 Archetypes):

Value is not File or String (  - xmlrpclib.Binary)\n</string></value>\n</member>\n</struct></value>\n</fault>\n</methodResponse>\n

我怀疑我已经做了一些事情AT不高兴,但我不知道是什么。回溯来自 Archetypes field.py 的第 897 行,您可以在这里看到:

有人知道这是怎么回事吗?完整的代码示例也在这里:

Based on the answer to Bad interaction between Zope2 XML-RPC and AT Image mutator? I'd expect to be able to do the following with Plone 2.5:

proxy = xmlrpclib.ServerProxy('http://admin:admin@localhost:8080/Plone/screenshot.png', verbose=True)
wrappedData = xmlrpclib.Binary(open(filename).read())
proxy.setImage(wrappedData)

Instead, I get a traceback (from Archetypes):

Value is not File or String (  - xmlrpclib.Binary)\n</string></value>\n</member>\n</struct></value>\n</fault>\n</methodResponse>\n

I suspect I've done something to make AT unhappy, but I'm not sure what. The traceback comes from line 897 of Archetypes's field.py, which you can see here:

Anyone know what's going on here? Also full code example is here:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮萍、无处依 2024-12-18 12:49:16

有了这个补丁,它就像一个魅力:

--- Field.py    2011-10-24 20:33:49.000000000 +0200
+++ Field.py    2011-10-25 00:24:49.360826000 +0200
@@ -2,6 +2,7 @@

 import sys

+import xmlrpclib
 from copy import deepcopy
 from cgi import escape
 from cStringIO import StringIO
@@ -869,6 +870,8 @@
             filename = getattr(value, 'filename', value.getId())
             mimetype = getattr(value, 'content_type', mimetype)
             value = value.data
+        elif isinstance(value, xmlrpclib.Binary):
+            value = value.data
         elif isinstance(value, FileUpload) or shasattr(value, 'filename'):
             filename = value.filename
         elif isinstance(value, FileType) or shasattr(value, 'name'):

With this patch it works like a charm:

--- Field.py    2011-10-24 20:33:49.000000000 +0200
+++ Field.py    2011-10-25 00:24:49.360826000 +0200
@@ -2,6 +2,7 @@

 import sys

+import xmlrpclib
 from copy import deepcopy
 from cgi import escape
 from cStringIO import StringIO
@@ -869,6 +870,8 @@
             filename = getattr(value, 'filename', value.getId())
             mimetype = getattr(value, 'content_type', mimetype)
             value = value.data
+        elif isinstance(value, xmlrpclib.Binary):
+            value = value.data
         elif isinstance(value, FileUpload) or shasattr(value, 'filename'):
             filename = value.filename
         elif isinstance(value, FileType) or shasattr(value, 'name'):
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文