Django ajax文件上载到request.FILES

Django ajax文件上载到request.FILES,django,file-upload,xmlhttprequest,Django,File Upload,Xmlhttprequest,我用它把文件加载到django。对于现代浏览器,它支持通过XHR上传ajax,对于IE等老浏览器,它支持iFrame回退 现在的问题是:如果我上传大文件,只有iFrame上传有效,因为在这里文件被映射到request.files,django会立即将它们写入磁盘而不是内存 如果使用XHR上传,我必须读取请求。_raw_post_数据并将其写入磁盘,但由于内存错误而失败 这是我的文件上传器初始化: var uploader = new qq.FileUploader({ 'action':

我用它把文件加载到django。对于现代浏览器,它支持通过XHR上传ajax,对于IE等老浏览器,它支持iFrame回退

现在的问题是:如果我上传大文件,只有iFrame上传有效,因为在这里文件被映射到request.files,django会立即将它们写入磁盘而不是内存

如果使用XHR上传,我必须读取请求。_raw_post_数据并将其写入磁盘,但由于内存错误而失败

这是我的文件上传器初始化:

var uploader = new qq.FileUploader({
    'action': uploadUrl,
    'multiple': true,
    'allowedExtensions': allowedExtensions,
    'element': selector,

    'debug': true,

    'onComplete': completeFunction,
    'onProgress': progressFunction,
    'onSubmit': submitFunction
});
在django端,我使用以下代码将文件内容写入磁盘:

# open a new file to write the contents into
new_file_name = str(uuid.uuid4())
destination = open(upload_path + new_file_name, 'wb+')

# differentiate between xhr (Chrome, FF) and pseudo form uploads (IE)
if len(request.FILES) > 0: # IE
    for chunk in request.FILES[0].chunks():
        destination.write(chunk)

else: # others
    destination.write(request._raw_post_data)
destination.close()
我也试过了,但是失败了,出现了一个IOError:request data read error


有没有办法通过XHR将文件上传到request.files中,然后使用django内置处理?

您尝试了解决方案的哪一部分?如果你像他一样请求.raw\u post\u data.read1024并一次写出1024字节,你不应该有任何内存错误。你提到的那个。事实证明,使用另一个文件可以正常工作,因此第一个文件似乎已损坏。好的,它与该文件无关。Chrome工作正常,Firefox没有。@Penthi您解决过这个问题吗?我也被它卡住了。忘记删除的评论,这与firebug无关。目前,我还没有答案。你尝试了解决方案的哪一部分?如果你像他一样请求.raw\u post\u data.read1024并一次写出1024字节,你不应该有任何内存错误。你提到的那个。事实证明,使用另一个文件可以正常工作,因此第一个文件似乎已损坏。好的,它与该文件无关。Chrome工作正常,Firefox没有。@Penthi您解决过这个问题吗?我也被它卡住了。忘记删除的评论,这与firebug无关。目前,我还没有答案。