FileFieldにに大きなファイルを追加する際のコピーを避けます
質問
私のユーザーは、私のコードは、その後、(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'))
所属していません StackOverflow