У меня есть конечная точка от наших ребят из Django с документацией, которая гласит:

POST в / api / 1 / photo-uploads / с enctype = "multipart / form-data" с файлами в поле с именем "files []".

Я пытался отправить загруженные файлы с formData, используя метод jquery AJAX. Я продолжаю получать сообщение об ошибке, указывающее, что файл не был отправлен. Когда я просматриваю полезную нагрузку, я вижу.

undefined
------WebKitFormBoundary9AzM2HQPcyWLAgyR
Content-Disposition: form-data; name="file"; filename="auzLyrW.jpg"
Content-Type: image/jpeg

Это не обязательно означает, что он не был отправлен, но определенно не публикуется местоположение. И у меня нет никакой проверки, что файл загружен.

    var formData = new FormData();
    formData.append('file', $('#file-upload').get(0).files[0]);
    $.ajax({
        url: '/api/1/photo-uploads/',
        type: 'POST',
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
    });

Когда я использую console.log formData, он просто показывает методы прототипа, такие как .append. Поэтому я не могу проверить, отправляются ли данные файла помимо проверки полезной нагрузки. Я могу зарегистрировать $('#file-upload').get(0).files[0], но я вижу подробности только из самого файла. Поскольку я тестирую его локально, место загрузки должно быть примерно таким: localhost: 8000 /.

Ребята из бэкенда считают, что я этим занимаюсь. Когда я пишу простую форму, она отлично работает. Я пробовал несколько плагинов и основных методов, и все они создали 400 {"message": "No photos supplied.", "success": false}

Любые идеи поощряются.

7
Zach Shallbetter 20 Дек 2013 в 08:46
1
 – 
Rohan
20 Дек 2013 в 09:21
Да, мой код выше представляет собой смесь этих двух ответов. Если только я что-то не упустил.
 – 
Zach Shallbetter
20 Дек 2013 в 09:25
Я также хотел задать этот хорошо задокументированный вопрос. Это не решило мою проблему, но все было сделано хорошо stackoverflow.com/questions/6974684/…
 – 
Zach Shallbetter
20 Дек 2013 в 10:09

1 ответ

Лучший ответ

В документации просили называть его files[]. То, что было отправлено, было file.

formData.append('files[]', $('#file-upload').get(0).files[0]);

7
Zach Shallbetter 20 Дек 2013 в 23:24