我有以下方法将directory_path
中的所有文件复制到my django model。好吧,这可以按预期工作:将文件复制到模型中使用upload_to
定义的位置。但是有一个问题:并非一切都被复制了。只有部分文件。像17.530字节,而不是〜1-2兆字节。 :(这让我很伤心。
def _handle_directory(self, directory_path, directory):
for fs_name in os.listdir(directory_path):
fs_path = os.path.join(directory_path, fs_name)
if os.path.isfile(fs_path):
path = os.path.join(directory_path, fs_path)
with open(path, 'r') as f:
file_wrapper = File(f)
self.cnt_files += 1
new_file = FsFile(directory=directory,
filename=fs_name.decode(self.fs_encoding).encode('utf-8'),
file=file_wrapper, uploader=self.uploader)
new_file.save()
更新1:
我用三个文件运行它:
filename | orig. size | imported size | ratio
foo.pdf | 70.818 | 1365 | 1,92 %
bar.html | 3.355 | 3355 | 100 %
fiz.zip | 645 | 135 | 20,93 %
答案 0 :(得分:0)
好吧,我回答这个问题,因为jensq没有。
我必须将b
- 标记添加到open
:
with open(path, 'rb') as f:
然后一切都按我预期的方式运作。