multipart / formdata不使用jQuery.ajax发送文件数据

时间:2013-12-20 04:46:16

标签: javascript jquery ajax django api

我的Django后端人员有一个端点,文档内容如下:

  

使用名为“files []”的字段中的文件,使用enctype =“multipart / form-data”发送到/ api / 1 / photo-uploads /。

我一直在尝试使用jquery的AJAX方法使用formData发送上传的文件。我继续收到错误,表明文件未发送。当我查看有效载荷时,我看到了。

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}

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:6)

文档要求将其称为files[]。发送的内容是file

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