从Django中的自定义上传处理程序中获取文件上载的最终目的地

时间:2013-01-13 00:00:33

标签: python django thumbnails

我目前通过挂钩Filefield所在模型的保存方法来生成图像上传的缩略图,但由于种种原因,这真的很糟糕。它确实有效,不像我之前使用自定义上传处理程序的实验...

这使我成为创建和更新缩略图的适当时机但是我试图找出最终保存上传文件的位置(因此我可以将缩略图保存到基于此的路径)。我可以很容易地获得临时文件夹路径,但这没用,我需要知道上传最终会上传到哪个文件夹,这可以从这里开始吗?

class Thumbnailer(TemporaryFileUploadHandler):
    def file_complete(self, file_size):
        self.file.seek(0)
        if not self.content_type is None and 'image' in self.content_type:
            newfile = StringIO()
            img = Image.open( self.file )
            thumb_size = 400,300
            img.thumbnail( thumb_size, Image.ANTIALIAS )
            img.save( os.path.join("THIS PATH IS WHAT I NEED", "thumbs", self.file_name, 'JPEG', quality=80 )
    return super(Thumbnailer, self).file_complete(file_size)

ps:请不要通过推荐插件和用于拇指钉的混合来回答 - 我知道并且已经忽略了所有这些,至少对于这个项目..

1 个答案:

答案 0 :(得分:1)

文件上传处理程序不知道上传文件的存储位置,因此如果您真的必须坚持使用自定义上传处理程序,则必须对该路径进行硬编码。

否则,你可以:

  • 获取tumbnal的自定义视图(在第一次请求时生成缩略图,就像Sorl一样)
  • 在设置中存储该路径
  • 自定义文件字段