小编Fre*_*red的帖子

sorl-thumbnail不会删除缩略图

在覆盖文件时遇到SORL缩略图问题并删除缩略图文件或刷新缩略图.场景是我有一个文件,每个条目总是相同但可以覆盖.上传新文件并覆盖旧文件时,需要重新创建缩略图.

这是在模型+表单级别,所以我使用低级API生成大拇指.

尝试过使用:

from sorl.thumbnail import delete

delete(filename)
Run Code Online (Sandbox Code Playgroud)

但是没有成功,缩略图永远不会被删除或覆盖.

我甚至尝试过:

from sorl.thumbnail.images import ImageFile
from sorl.thumbnail import default

image_file = ImageFile(filename)
default.kvstore.delete_thumbnails(image_file)
Run Code Online (Sandbox Code Playgroud)

再次没有成功.

请帮忙!

更新:

我通过创建备用ThumbnailBackend和新的_get_thumbnail_filename方法找到了解决方法.新方法使用文件的SHA-1哈希来始终具有特定于当前文件的缩略图.

这是可能遇到类似场景的其他任何人的后端.

class HashThumbnailBackend(ThumbnailBackend):

  def _get_thumbnail_filename(self, source, geometry_string, options):
    """
    Computes the destination filename.
    """
    import hashlib

    # hash object
    hash = hashlib.sha1()

    # open file and read it in as chunks to save memory
    f = source.storage.open(u'%s' % source, 'rb')
    while True:
      chunk = f.read(128)
      if not chunk:
        break
      hash.update(hashlib.sha1(chunk).hexdigest())

    # close file
    f.close() …
Run Code Online (Sandbox Code Playgroud)

django sorl-thumbnail

3
推荐指数
2
解决办法
4116
查看次数

标签 统计

django ×1

sorl-thumbnail ×1