前端

<body>
  <input id="fileRef" type="file" />
  <button onclick="push">Push</button>

  <script>
    function push() {
      const file = fileRef.files[0];
      const formData = new FormData();
      formData.append('image', file, file.name);

      fetch('http://127.0.0.1:8000/api/item/', {
        headers: {
          'Content-Type': 'multipart/form-data',
        },
        method: 'POST',
        body: formData
      });
    }
  </script>
</body>

后端

from rest_framework.parsers import MultiPartParser

class ItemViewSet(ModelViewSet):
    ...
    parser_classes = [MultiPartParser]

以上是该错误的最小实现,当我发送请求时,它将生成这样一个错误:Multipart form parse error - Invalid boundary in multipart: None

请求标头、有效负载

enter image description here

enter image description here

我花了很长时间,不知道如何解决;)

我try 这样更改内容类型

'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'

但它不起作用,我的期望是Django可以正确地解析并成功接受文件

推荐答案

起初我认为这是Django的问题,但后来我发现我在前端的要求是不正确的;)

WebAPI 100, when sending 101, there is no need to manually set the 102 attribute in request headers!!!

如果请求Body为FormData,浏览器会自动将Content-Type: multipart/form-data添加到Header中,并添加正确的边界.

我在浏览这articles个的时候发现了这个,反正我的问题解决了~

我是来回答我之前问过的一个问题的,也许在不久的将来会有人带着和我一样的问题来这里,哈哈哈哈…

Django相关问答推荐

注册新用户时,对象没有属性';is_active';错误:';NoneType';对象没有属性

Django REST序列化程序TO_REATION失败

Django 模型 Select - 只允许管理界面上的特定转换

使用 Python/Django 上传大文件

PyCharm:强制 Django 模板语法突出显示

try 编辑/创建时,特定模型的 Django 管理员挂起(直到超时错误)

Django {{ MEDIA_URL }} 空白 @DEPRECATED

如何在 forms.Form 子类上动态设置 models.ModelChoiceField 的查询集

Django Calendar日历小部件?

Python / Django 中的 Unicode 与 UTF-8 混淆?

django - 如何使翻译工作?

django-object-permissions Vs django-guardian Vs django-authority

Django Admin:如何在同一视图中显示来自两个不同模型的字段?

将 Django Rest Framework 与序列化程序一起使用时出现 AttributeError

Django 1.7 - 如何 suppress (1_6.W001)某些元素单元测试可能无法按预期执行.?

运行单元测试时禁用 Django South?

XlsxWriter 对象另存为 http 响应以在 Django 中创建下载

Django Debug Toolbar:了解时间面板( time panel)

Django:如何从模板中识别调用视图?

我将如何package打包和销售 Django 应用程序?