当在React上通过filepond对文件进行POSTED时,Django Rest Framework会返回错误的请求

问题描述 投票:1回答:1

我有一个使用filepond的反应应用程序。 Filepond接受一个文件,并使用以下自定义标头将其POST到服务器:

const filepondServer = {
  url: `${apiRoot}expenses/receipt_upload`,
  process: {
    headers: {
      Authorization: `Token ${this.props.auth.token}`
    }
  }
};

这是一个django休息框架视图:

class ExpenseReceiptUploadView(APIView):
    permission_classes = [permissions.IsAuthenticated, HasMetis]
    parser_classes = (FileUploadParser,)

    def post(self, request):
        receipt = request.data["file"]
        return Response(status=status.HTTP_201_CREATED)

(我知道它需要充实错误等,但一旦有效就会出现)

这将返回400错误,没有进一步的细节。如果我删除receipt = request.data["file"]行,它返回201,服务器不会抱怨。

为了调试这个,我尝试打印request - 这很好,但request.data导致400,request.FILES

错误非常简洁,只是说:

2018-12-21 00:01:35,850 [middlewares 70] INFO: {"method": "POST", "path": "/api/v1/operations/expenses/receipt_upload", "user": "Alex", "user_id": 27192835, "device_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "request_post_body": {"filepond": "{}"}}
2018-12-21 00:01:35,851 [log 228] WARNING: Bad Request: /api/v1/operations/expenses/receipt_upload
[21/Dec/2018 00:01:35] "POST /api/v1/operations/expenses/receipt_upload HTTP/1.1" 400 0
django reactjs django-rest-framework django-file-upload
1个回答
0
投票

FilePond的作者在这里。

FilePond还将使用相同的字段名称发布文件的元数据对象。这在PHP上工作正常,但我不确定这在其他后端是否会很麻烦。我认为这是下面的错误试图表明的。

"request_post_body": {"filepond": "{}"}

在FilePond 3.7之前的版本中,将首先发布元数据。我在3.7中交换了这个,现在文件首先发布,所以我想知道你是使用3.7还是早期版本,如果这有任何区别。

© www.soinside.com 2019 - 2024. All rights reserved.