FileFieldにに大きなファイルを追加する際のコピーを避けます

StackOverflow https://stackoverflow.com/questions/1300033

  •  18-09-2019
  •  | 
  •  

質問

私のユーザーは、私のコードは、その後、(HTTP経由でアップロードされたときに、彼らが正常に終わる)FileField.upload_toに移動する必要があるFTPを使用してファイルをアップロードするように、

私は、http経由でアップロードする不快ないくつかの非常に大きなファイルを扱っています。私の問題は、django.core.files.Fileを使用する一般的に提案された方法である。

from django.core.files import File

# filename is a FileField
file_obj = MyModel(filename=File(open('VIDEO_TS.tar', 'rb')))

私は避けるために必要なデータを、コピーにつながります。確かupload_toをしながらFileFieldにし、既存のファイルを追加するにはそこにどのような方法が呼ばれていますか?

役に立ちましたか?

解決

私は、最も簡単な方法は、あなた自身のフィールドやストレージを書くことだろうと思います。

他のヒント

少し遅れて、しかします:

class _ExistingFile(UploadedFile):
    """ Utility class for importing existing files to FileField's. """

    def __init__(self, path, *args, **kwargs):
        self.path = path
        super(_ExistingFile, self).__init__(*args, **kwargs)

    def temporary_file_path(self):
        return self.path

    def close(self):
        pass

    def __len__(self):
        return 0

使用方法:

my_model.file_field.save(upload_to, _ExistingFile('VIDEO_TS.tar'))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top