技术问题:实现了这样一个模块字段,可以按块上传文件。
详细信息:
根据我目前的理解,假设以下来源(不完整):
SomeModelField Class
class ChunkedFileField(models.FileField):
def __init__(self, *args, **kwargs):
super(ChunkedFileField, self).__init__(*args, **kwargs)
description = "Chunked file"
__metaclass__ = models.SubfieldBase
def __init__(self, *args, **kwargs):
kwargs['max_length'] = len(UPLOAD_TO) + 1 + FILE_NAME_MAX_LENGTH
super(ChunkedFileField, self).__init__(*args, **kwargs)
def formfield(self, form_class=None, choices_form_class=None, **kwargs):
defaults = {'form_class': ChunkedFileFormField}
defaults.update(kwargs)
return super(ChunkedFileField, self).formfield(**defaults)
SomeFormField类
class ChunkedFileFormField(forms.FileField):
widget = ChunkedFileUploadWidget
def __init__(self, *args, **kwargs):
print 'ChunkedUploadFileField'
super(ChunkedFileFormField, self).__init__(*args, **kwargs)
SomeWidget类
class ChunkedFileUploadWidget(ClearableFileInput):
def __init__(self, attrs=None):
super(ChunkedFileUploadWidget, self).__init__(attrs)
self.attrs['id'] = 'chunked_upload'
class Media:
js = (
'js/cu.js',
'js/jquery.js',
'js/jquery.ui.widget.js',
'js/jquery.iframe-transport.js',
'js/jquery.fileupload.js',
'js/spark-md5.js',
'js/ksb_django_fields.js',
)
问题: 我是否正在为模型领域构建分块上传的正确方法?
我不明白,我怎么能解决这种情况: 使用一组字段,其中一个是我的ChunkedFileFormField,表单的POST请求应该只发生一次,但对于我的Chunked Field,POST请求应该发生在每个chunked部分。
如何解决这个问题?任何想法或你的实现经验都会很棒!
P.S。:如果可以使用文章链接,代码示例或git源参考。