2009-08-19 9 views
1

私は、httpを使ってアップロードするのが不快なかなり大きいファイルを扱っているので、ユーザーはFTPを使ってファイルをアップロードします。そのため、コードはFileField.upload_toに移動する必要があります通常はHTTP経由でアップロードすると終了します)。FileFieldに大きなファイルを追加するときにコピーを避ける

from django.core.files import File 

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

は、私が避けるために必要なデータを、コピーにつながり:私の問題は、django.core.files.Fileを使用する一般的に提案された方法です。 upload_toが呼ばれていることを確認しながら、既存のファイルをFileFieldに追加する方法はありますか?

答えて

0

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

3

少し遅れて、しかし:

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')) 
+0

おかげで、私はこれを試してみましょう –

関連する問題