将文件内容(二进制数据)存储在plone.app.registry中

时间:2012-07-24 19:18:35

标签: plone z3c.form

我需要以与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 一起使用?

3 个答案:

答案 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字段的控制面板小部件更改为NamedImageFieldWidgethttps://github.com/collective/collective.sitelogo/blob/master/src/collective/sitelogo/controlpanel.py#L19