我需要以与Plone 3.3到4.2兼容的方式存储 plone.app.registry 二进制数据。
简单地使用schema.Byte
类型我可以在Plone 4.2上快速达到此目的(不是非常用户友好,但它有效),但不适用于Plone 3.3。
在Plone 3.3上,注册表显示文件上传控件,但是当我尝试获取保存的数据时,我发现它只是存储了一个字符串,如:
'<... HTTPFileUpload...>'
...所以对象的python repr。
我该如何解决这个问题?我需要将 plone.namedfile 产品与 collective.z3cform.filewidget 一起使用?
答案 0 :(得分:4)
plone.app.registry并非真正用于存储二进制数据。它设计简单,轻便且可以防移植。
你想用这个来实现什么?可能有更好的方法。
答案 1 :(得分:1)
好的,似乎你也可以在Plone 3上拥有相同的行为;只需要升级plone.z3cform
答案 2 :(得分:1)
从plone.formwidget.namedfile 1.0.12开始,你也可以在ASCII字段上使用wigets。然后将数据转换为base64。 Plone 5将该功能用于其网站徽标,该徽标存储在注册表中。
例如,请参阅该功能的Plone 4 backport:https://github.com/collective/collective.sitelogo
特别是:
为您的图片使用ASCII
字段:https://github.com/collective/collective.sitelogo/blob/master/src/collective/sitelogo/interfaces.py#L14
将ASCII
字段的控制面板小部件更改为NamedImageFieldWidget
:https://github.com/collective/collective.sitelogo/blob/master/src/collective/sitelogo/controlpanel.py#L19