1

这个问题的一部分已经用另一个stackoverflow问题解决了,但似乎它并没有清理所有东西。

步骤是:

  • 创建带有图像字段的文档
  • 看到 blobstorage 有一个文件
  • 打开具有该图像的缩放版本的视图
  • 看到 blobstorage 现在有两个文件,图像和缩放图像
  • 按照另一个问题的建议,做zeopack0
  • 看到 blobstorage 上还有一个 blob,缩放后的图像

所以问题是:如何从 blobstorage 中删除这些缩放的图像?

我尝试运行zeopack两次但没有成功,缩放的斑点仍然存在。

更新:正如所vangheem指出的,ArchetypesImage内容类型不会发生这种情况。尽管如此,这个问题仍然有效,对于具有图像字段的基于敏捷的内容类型。

仅当您删除文档时才删除比例尺,这不是我的用例,我只想删除图像(图像信用已过期,无法再显示图像)。

4

2 回答 2

2

删除内容项也应删除其比例。

我只是在 plone 4.2.4 中测试。这是我的步骤:

  1. 删除现有的 blobstorage 和文件存储
  2. 启动克隆
  3. 创建新站点
  4. 添加图像,看到创建了 2 个 blobstorage 文件。一个是原始的,另一个是迄今为止创建的一个比例
  5. 删除图像,两个文件仍在 blobstorage 中以支持撤消
  6. 将数据库打包到 0 天,这两个文件现在都从 blobstorage 中删除

所以一切似乎都正常工作。

在您的帖子中,您提到您正在创建一个文档。如果您指的是新闻项目,那么这些图像不会存储在 blobstorage 中。

现在,如果您有一个自定义内容类型,其中有一个图像字段,并且您只是尝试删除图像字段和从该字段生成的比例,但不删除整个类型,您需要手动删除比例. 我认为它会是这样的:

del doc.__blob_scales['image']['preview']
于 2013-02-11T22:27:03.557 回答
1

找到了!

要删除刻度,您实际上必须删除 plone.scale 注释:

# assume 'document' is a Dexterity-based content type that has a NamedBlobImage field 
from zope.annotation.interfaces import IAnnotations
annotations = IAnnotations(document)
if 'plone.scale' in annotations:
    del annotations['plone.scale']
if getattr(document, 'image', None) is not None and document.image is not None:
    del document.image
    document.reindexObject()
于 2013-02-12T11:00:34.450 回答