如何使用valums / file-uploader使django文件上传工作

时间:2012-04-16 21:32:52

标签: ajax django file-upload upload

我想使用django上传运行valums / file-uploader,将其与模型字段(FileField)一起使用

基本的django模型:

class Image(models.Model):
    user = models.ForeignKey(User)
    url = models.FileField(upload_to='%Y/%m/%d')

基本视图,使用非ajax上传:

def ajax_upload(request):
    if request.method == 'POST':
        newfile = Image()
        newfile.user = request.user
        file_content = ContentFile(request.FILES['file'].read())
        file_name = request.FILES['file'].name
        newfile.url.save(file_name, file_content)
        results = {'url': newfile.url, 'id': newfile.id}
        return HttpResponse(json.dumps(results))
    raise Http404

问题是,valums uploader没有把文件放在“request”文件中,它把它放在POST中,而django把它作为一个querydic。

将它与顶级代码django一起使用说:

  

中未找到”密钥'文件'

如果我改变:

file_content = ContentFile(request.POST)
django说:

  

预期的读缓冲区,发现QueryDict

我可以使它工作,但我仍然希望坚持django的原生文件上传,它更清洁。

1 个答案:

答案 0 :(得分:2)

使用request.body(如果早于1.4,则为request.raw_post_data