【问题标题】:Getting final destination of file upload from within custom upload handler in Django从 Django 的自定义上传处理程序中获取文件上传的最终目的地
【发布时间】:2012-12-27 06:43:08
【问题描述】:

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

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

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:请不要通过推荐插件和混合插件来做缩略图 - 我知道并且已经忽略了所有这些,至少对于这个项目..

【问题讨论】:

    标签: python django thumbnails


    【解决方案1】:

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

    否则,您可以:

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

    【讨论】:

    • 我同意它似乎不知道,但你确定没有办法弄清楚吗?我觉得应该有一种方法来获取与处理程序相关的模型和字段名称。我会进一步研究一下。同时,您知道 django 是否有任何其他在文件上传发生时调用的钩子或触发器?
    • 实际上只是重新阅读了您的答案,其中两个看起来很有希望 - 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2010-11-17
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2012-06-18
    相关资源
    最近更新 更多