تجنب النسخ عند إضافة ملف كبير إلى ملف filefield

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

  •  18-09-2019
  •  | 
  •  

سؤال

أنا أتعامل مع بعض الملفات الكبيرة جدا غير مريحة للتحميل عبر 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'))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top