首页 > 解决方案 > 输入文件上传api平台无效

问题描述

我正在尝试使用api platform file upload 上传文件。我正在使用带有 redux-saga 的 React-redux 来发出此请求,但服务器不断抛出错误的请求响应。

Api 平台文档说明了以下请求:

此端点接受标准的多部分/表单数据编码数据,但不接受 JSON 数据。您需要相应地格式化您的请求。

我的传奇: 我尝试将我上传的文件附加到formData我的请求中并将其用作正文。

 let data = new FormData();
 data.append("file", action.payload.file)

 const fileResponse = yield call(
   fetch,
   `${api.url}/api/media_objects`,
   {
     method: 'POST',
     mode: 'no-cors',
     body: data,
     headers: { 'content-type': 'multipart/form-data' }
   }
 );
 return console.log(fileResponse);

这是发布新媒体对象的 api 平台示例请求

curl -X POST " https://api.myroute/api/media_objects " -H "accept: application/ld+json" -H "Content-Type: multipart/form-data" -F "file=@1.6b. jpg;类型=图像/jpeg"

Api 平台一直返回 400 错误,表示输入无效。知道有效输入应该是什么样子吗?

对于我的媒体对象实体,我遵循了api 平台文档,因此它看起来与文档中的完全相同

标签: reactjssymfonyreact-reduxredux-sagaapi-platform.com

解决方案


细节很重要

headers: { 'content-type': 'multipart/form-data' }

它应该是

headers: { 'Content-Type': 'multipart/form-data' }

没有'content-type',只有'Content-Type'标头被定义(RFC)并被广泛接受。


推荐阅读