【问题标题】:multipart/formdata is not sending file data with jQuery.ajaxmultipart/formdata 不使用 jQuery.ajax 发送文件数据
【发布时间】:2014-01-08 21:26:14
【问题描述】:

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

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

我一直在尝试使用 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}

任何想法都将不胜感激。

【问题讨论】:

标签: javascript jquery ajax django api


【解决方案1】:

文档要求将其命名为files[]。发送的是file

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

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 2012-10-01
    • 2021-02-21
    相关资源
    最近更新 更多