2012-07-24 105 views
2

我需要以兼容于Plone 3.3到4.2的方式存储plone.app.registry二进制数据。将文件内容(二进制数据)存储在plone.app.registry中

使用简单的schema.Byte类型我可以在Plone 4.2上快速找到这个(不是非常用户友好,但它工作),但不能在Plone 3.3上。

在Plone的3.3注册表displyaing文件上传控件,但是当我试图让保存的数据,我发现它只是存储就像一个字符串:

'<... HTTPFileUpload...>'

...所以Python对象的再现。

我该如何解决这个问题?我需要使用plone.namedfile产品collective.z3cform.filewidget

回答

1

由于plone.formwidget.namedfile 1.0.12您也可以在ASCII字段上使用该wigets。数据然后转换为base64。 Plone 5将该功能用于存储在注册表中的网站徽标。

有关示例,看到该特征的Plone 4中反向移植:https://github.com/collective/collective.sitelogo

特别:https://github.com/collective/collective.sitelogo/blob/master/src/collective/sitelogo/interfaces.py#L14

更改ControlPanel控制插件为ASCII字段:

为您的图像的ASCII字段的使用到NamedImageFieldWidgethttps://github.com/collective/collective.sitelogo/blob/master/src/collective/sitelogo/controlpanel.py#L19

4

plone.app.registry并非真正用于存储二进制数据。它被设计成简单,轻便和防移动的。

你想用这个做什么?可能有更好的方法。

+1

我需要存储一个不是CMS内容的文件,但需要用于后端配置。 我能找到的唯一方法是将其作为假内容类型(我喜欢的东西)或Zope“文件”存储... – 2012-07-25 06:59:14

1

好吧,似乎你可以在Plone 3上也有相同的行为;只需要升级plone.z3cform

相关问题