【问题标题】:Failure to upload image to Plone 2.5 via xmlrpc无法通过 xmlrpc 将图像上传到 Plone 2.5
【发布时间】:2011-10-24 18:39:15
【问题描述】:

根据对Bad interaction between Zope2 XML-RPC and 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 行,您可以在此处看到:

有人知道这里发生了什么吗?完整的代码示例也在这里:

【问题讨论】:

  • 我怀疑也许,令人惊讶的是,从未添加对二进制的支持。

标签: python plone xml-rpc


【解决方案1】:

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

--- 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'):

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 2015-10-16
  • 2018-09-21
  • 1970-01-01
  • 2023-03-27
  • 2019-07-20
  • 2021-07-22
相关资源
最近更新 更多