我在处理一些比较大的文件,这是不舒服通过http上传,让我的用户使用FTP上传它我的代码则需要移动到FileField.upload_to(当通过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')))
导致复制数据,这是我需要避免。 有没有什么办法对已经存在的文件添加到的FileField同时确保upload_to叫?
有点晚了,但是:
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'))