0

私は現在、ファイルフィールドが含まれているモデルの保存メソッドをフックして画像アップロードのサムネイルを生成していますが、さまざまな理由から、これは非常に残念です。ただし、カスタムアップロードハンドラを使用した以前の実験とは異なり、機能します...

これは、サムネイルを作成および更新するための適切な分岐点として私を驚かせますが、アップロードされたファイルが最終的にどこに保存されるかを見つけようとして行き詰まりました(そのため、サムネイルをそれに基づいたパスに保存できます)。一時フォルダのパスを簡単に取得できますが、それは無駄です。アップロードが最終的にどのフォルダにアップロードされるかを知る必要があります。これはここから可能ですか?

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:サムネイル用のプラグインとミックスインを推奨して答えないでください-少なくともこのプロジェクトでは、これらすべてを知っており、無視しています。

4

1 に答える 1

1

ファイルアップロードハンドラーは、アップロードされたファイルがどこに保存されるかを認識しないため、カスタムアップロードハンドラーに固執する必要がある場合は、そのパスをハードコーディングする必要があります。

それ以外の場合は、次のことができます。

  • サムネイルを取得するためのカスタムビュー(Sorlと同じように、最初のリクエストでサムネイルを生成します)
  • そのパスを設定に保存します
  • カスタムファイルフィールド
于 2013-01-13T03:44:34.367 に答える