TemporaryUploadedFile
を使用しtempfile.NamedTemporaryFile
ます。Pythonのドキュメントには、次のように書かれています:
tempfile.NamedTemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None[, delete=True]]]]]])
この関数は、TemporaryFile() とまったく同じように動作しますが、ファイル システムでファイル名が表示されることが保証されている点が異なります (Unix では、ディレクトリ エントリはリンク解除されません)。その名前は、ファイル オブジェクトの name 属性から取得できます。名前付きの一時ファイルがまだ開いている間に、その名前を使用してファイルを 2 度目に開くことができるかどうかは、プラットフォームによって異なります (Unix では使用できますが、Windows NT 以降では使用できません)。delete が true (デフォルト) の場合、ファイルは閉じられるとすぐに削除されます(私のものを強調)。
返されるオブジェクトは常に、ファイル属性が基になる実際のファイル オブジェクトであるファイルのようなオブジェクトです。このファイルのようなオブジェクトは、通常のファイルと同様に with ステートメントで使用できます。
したがって、ここでのデフォルトの動作は、ファイルが閉じられるとすぐにファイルを削除することです。これは、最初の処理の後に自動的に行われます。したがって、2 つの選択肢があります。に渡すことができるようにメソッドをサブクラス化TemporaryUploadedFile
してオーバーライドすることができます(ただし、古い一時ファイルの蓄積を避けるために、完了したらファイルを手動で削除することを忘れないでください)。アップロードの処理から戻る前に別の場所に移動し、代わりに新しい場所を送り返します。__init__
delete=False
tempfile.NamedTemporaryFile
TemporaryUploadedFile
UploadedFile
それ自体は基本クラスであり、インスタンス化することを意図していないため、使用するのは適切ではありません。