reactjs - 输入文件上传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 平台文档,因此它看起来与文档中的完全相同
解决方案
细节很重要
headers: { 'content-type': 'multipart/form-data' }
它应该是
headers: { 'Content-Type': 'multipart/form-data' }
没有'content-type'
,只有'Content-Type'
标头被定义(RFC)并被广泛接受。
推荐阅读
- c++ - 阅读简单的 .txt 时,我得到了垃圾值
- python - 如何读取在同一列中具有多个 json 值的数据框
- sql - SQL Server - 在函数中创建超时异常
- sql - 使用 WHERE 和 COUNT 在 sql 查询中返回错误值
- python - Python:将多个二进制列转换为单个分类列
- python - 字符串文字以单引号开头并以三引号结尾,它如何有效?
- linux - GREP 或 AWK:在每行的前 N 个字符中搜索,并输出匹配模式的周围行
- java - 为什么我不能在arraylist 中使用getFixed 方法?我怎样才能让它工作?
- amazon-web-services - AWS CloudFront 使用查询字符串返回来自 S3 源的访问被拒绝
- javascript - v-model 的 this['key'] 和 $data['key'] 有什么区别?