1

この質問の一部は、別のstackoverflowの質問ですでに解決されていますが、すべてがクリーンアップされるわけではないようです。

手順は次のとおりです。

  • 画像フィールドを使用してドキュメントを作成する
  • blobstorageに1つのファイルがあることを確認してください
  • その画像の拡大縮小バージョンでビューを開きます
  • blobstorageに画像と拡大縮小された画像の2つのファイルがあることを確認してください
  • 他の質問で提案されているように、zeopack0日で
  • スケーリングされた画像であるblobstorageにまだ1つのblobがあることを確認してください

したがって、問題は、このスケーリングされた画像もblobstorageからどのように削除できるかということです。

2回実行してzeopackも成功しませんでしたが、スケーリングされたBLOBはまだ残っています。

更新:vangheem指摘されているように、これはArchetypesコンテンツタイプでは発生しませんImage。それでも、画像フィールドを持つ敏捷性ベースのコンテンツタイプに関しては、この質問は引き続き有効です。

スケールが削除されるのは、ドキュメントを削除した場合のみです。これは私の使用例ではありません。画像を削除したいだけです(画像クレジットの有効期限が切れており、画像を表示できなくなりました)。

4

2 に答える 2

2

コンテンツアイテムを削除すると、そのスケールも削除されます。

私はplone4.2.4でテストしています。これが私のステップです:

  1. 既存のblobstorageとfilestorageを削除します
  2. ploneを起動します
  3. 新しいサイトを作成する
  4. イメージを追加します。2つのblobstorageファイルが作成されていることを確認してください。1つはオリジナル、もう1つはこれまでに作成された1つのスケールです。
  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 に答える