在django中直接上传文件而不缓存文件

时间:2017-07-27 18:22:00

标签: python django file-upload

我正在尝试构建一个django驱动的文件上传器,它将文件直接上传并存储到目标位置,而不会在任何临时位置缓存该文件。到目前为止,我理解的是,我们应该编写一个自定义FileUploadHandler来实现这一点。所以我想出了以下内容。

class DirectUploadHandler(FileUploadHandler):

    def __init__(self, request=None):
        super().__init__(request)
        self.field_name = None
        self.file_name = None
        self.content_type = None
        self.content_length = None
        self.charset = None
        self.content_type_extra = None
        self.request = request
        self.file = None

    def new_file(self, field_name, file_name, content_type, content_length, charset=None, content_type_extra=None):
        self.field_name = field_name
        self.file_name = file_name
        self.content_type = content_type
        self.content_length = content_length
        self.charset = charset
        self.content_type_extra = content_type_extra
        self.file = open('\\\\10.0.8.5\\filename.ext', 'wb+')

    def receive_data_chunk(self, raw_data, start):
        self.file.write(raw_data)

    def file_complete(self, file_size):
        self.file.seek(0)
        self.file.size = file_size
        return self.file

现在上传工作正常,它直接写入目的地。但我注意到在完全写入目标文件之前调用了file_complete方法。所有代码执行完成,django视图返回完成上传。文件仍然在增长,完成写作需要几秒钟。为什么延迟完成写入过程?为什么在文件实际完成写入之前调用file_complete方法?

0 个答案:

没有答案