2015-12-06 2 views
1

Да, это еще один вопрос о том, как загрузить файл с jQuery-клиента на сервер django, за исключением того, что ни один из ~ 15 решений, найденных в Интернете, не работал для меня. (и, пожалуйста, извините мою нобость - я нечасто пользователь веб-фреймворков в целом).jquery -> django file uploading

Таким образом, установка выглядит следующим образом:
сторона Клиента:

var formData = new FormData(); 
    formData.append('file', response.output['file'], response.output['name']) 
    $.ajax({ 
     url: "djangourl", 
     data: formData, 
     processData: false, 
     contentType: false, // also tried setting 'multipart/form-data', no profit 
     mimeType: 'multipart/form-data', 
     type: 'POST', 
     dataType: 'json', 
     cache: false, 
     success: function(data){ 
     alert(JSON.stringify(data)); 
     }, 
     error: function(data){ 
     alert(JSON.stringify(data)); 
     } 
    }); 

сторона сервера:

@require_http_methods(["POST"]) 
@csrf_exempt 
def upload_document(request, project_id): 
    try: 
     if request.FILES: 
      return HttpResponse(json.dumps("Yay!", default=json_util.default), status=200, content_type="application/json") 
     else: 
      return HttpResponse(json.dumps("Nah.", default=json_util.default), status=200, content_type="application/json") 
    except Exception as e: 
     return HttpResponseServerError(str(e)) 

И каждый раз, когда я пытаюсь это, я получаю пустой request.FILES, любые идеи, почему ?

UPDATE: как оказалось, request.POST содержит ключевой «файл», который привязан к «[object FileList]» (буквально эта строка), если это помогает как-то прояснить ситуацию.

+0

Я думаю, вы можете повторно использовать код из этого вопроса: http://stackoverflow.com/questions/19617996/file-upload-without-form –

+0

Или здесь http://stackoverflow.com/questions/166221/как-кан-I-Upload-файлы-асинхронно? RQ = 1 –

ответ

1

Как выясняется, response.output [ «файла»], который я получал от интерфейса (Aurelia-приложение) был FileList объект вместо одного файла (хотя не multiple спецификатора не был дан <input> тега). Заключительная тема, спасибо.

 Смежные вопросы

  • Нет связанных вопросов^_^