Django ajax jquery file upload

ajax, django, django-views, file-upload, jquery

Solution

Try this:

def upload(request):
  id = request.POST['id']
  path = '/var/www/pictures/%s' % id
  f = request.FILES['picture']
  destination = open(path, 'wb+')
  for chunk in f.chunks():
    destination.write(chunk)
  destination.close()
  # return status to client
  ...

You can read the full tutorial here: http://www.laurentluce.com/posts/upload-to-django-with-progress-bar-using-ajax-and-jquery/

Problem

I have a problem with file uploading in my django project. So the question is: how can I pass files to django view through jquery ajax? At this moment I have script: ``` <script type='text/javascript'> $(document).ready(function() { var csrf_token = $('input[name="csrfmiddlewaretoken"]').val(); $('#upload').click(function() { $.ajax({ csrfmiddlewaretoken: csrf_token, type: 'POST', url : '../ajax/upload_file/', enctype: "multipart/form-data", data : { 'file': $('#file').val() }, success: function(data) { console.log(data) } }) }) }) </script> ``` template: ``` <form method="" action="" name='upload_form' id='upload_form' >{% csrf_token %} <input type='file' name='file' id='file' /> <input type='button' value='Upload' id='upload'/> </form> ``` and view: ``` @csrf_exempt @xhr_to_json def verifyFile(request): if request.is_ajax(): file = request.FILES['file'] return {'message': file} else: return HttpResponseForbidden() ``` now im getting ``` Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 111, in get_response response = callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py", line 77, in wrapped_view return view_func(*args, **kwargs) File "/home/vova/git/LV- 083_LAMP.git/Testcase_Project/Testcase_Project/views/decorator.py", line 6, in wrapper data = func(*args, **kwargs) File "/home/vova/git/LV- 083_LAMP.git/Testcase_Project/Testcase_Project/views/testcase.py", line 96, in verifyFile request.FILES['file'] File "/usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py", line 258, in __getitem__ raise MultiValueDictKeyError("Key %r not found in %r" % (key, self)) MultiValueDictKeyError: "Key 'file' not found in <MultiValueDict: {}>" ``` is it possible to do it without external libraries?

Original source

Related problems