将文件从骨干模型发送到django

时间:2012-10-17 10:31:18

标签: django file backbone.js upload

我想将文件从Backbone上传到Django文件上传系统。

首先,我遵循https://stackoverflow.com/a/10916733/1590377解释。我做了一个FileModel,并且上面的指示我有一个包含这些信息的模型:

attributes: Object
    data: "data:image/png;base64,iVBORw ..."
    file: "image2012-06-12 13:36:45.png"

现在我将模型保存到我在django中有上传视图的URL,如下所示:

def upload_file_64(request):
   if request.method == 'POST':

       file = cStringIO.StringIO(base64.b64decode(request.POST['data']))
       #method to save the file
       response_data={"result":"ok"}
       return HttpResponse(simplejson.dumps(response_data), mimetype='application/json')
else:
    response_data={"success": "No a post request"}
    return HttpResponse(simplejson.dumps(response_data), mimetype='application/json')

但是django sistem给我的回应是:

"MultiValueDictKeyError at /api/upload64/↵'Key \'data\' not found in <QueryDict: {u\'base64,iVBORw0KG....

POST http请求是:

 POST:
 base64,iVBORw0KG ..."} = u''
 {"file":"Captura de pantalla de 2012-06-12 13:36:45.png","data":"data:image/png = u''

我如何解决这个问题,以便我可以将文件上传到django。我使用多部分方法从另一个平台上传文件如何安卓但我用骨干我无法上传文件。

有人可以帮助我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我编写了另一种解决方案。我已经使用jquery上传插件上传文件,并获得响应。

插件是:http://lagoscript.org/jquery/upload/demo?locale=en,我在骨干网视图中使用的代码是:

events : {
    'change #file1' : 'upload'
},
upload : function(){

    $('#file1').upload('http://192.168.0.195/api/upload/', function(res) {
            console.log(res)
            //now I use the res to create a model :)
        }, 'html');
},