【发布时间】:2020-07-09 16:11:50
【问题描述】:
我正在尝试上传图片,通过前端发送图片(axios请求),然后服务器返回这个错误。
无法将当前 JSON 数组反序列化为类型 'Microsoft.AspNetCore.Http.IFormFile' 因为该类型需要 JSON 要正确反序列化的对象。要修复此错误,请更改 JSON 到 JSON 对象(例如 {"name":"value"})或更改 将类型反序列化为数组或实现集合的类型 接口(例如 ICollection、IList),例如 List 可以 从 JSON 数组反序列化。也可以添加 JsonArrayAttribute 强制它从 JSON 数组反序列化的类型。路径“文件”, 第 1 行,位置 339。”
[HttpPost("add")]
public async Task<IActionResult> Add(Post post, IFormFile file){............}
这是我的 axios 请求
const submit = useCallback(
async (values: PostExtensions) => {
debugger;
setLoading(true);
const tarih = dayjs(values.date);
values.tarih = dayjs(date, "YYYY-MM-DDTHH:mm:ss Z").format();
const formdata = new FormData();
formdata.append("postId", values.postId!);
formdata.append("file", values.file![0]);
formdata.append("userId", values.userId!);
formdata.append("projectId", values.projectId!);
formdata.append("date", values.date!);
await entitySubmit({
values: JSON.parse(JSON.stringify(values)),
dispatch: dispatch,
returndata: true,
headers: {
"Content-Type": "multipart/form-data"
},
links: [
{
type: 0,
link: "post/addpost",
actionType: ActionType.add_Post,
method: "POST",
},
{
type: 1,
link: "post/editpost",
actionType: ActionType.edit_Post,
method: "POST",
},
],
id: "postId",
});
return null;
},
[show, dispatch]
);
当我尝试发布表单数据时,它没有提交。
EDIT 1:我发现问题出在哪里, formData 发送类似这样的空文件对象
formdata.get('file') // '[Object object]'
【问题讨论】:
-
首先尝试从邮递员或任何 api 测试软件中访问该 api,然后移动以使用前端语言使用该 api。
-
如何测试在邮递员或其他什么上发布图像文件?
-
可以显示上传文件的axios代码吗?从错误中,我猜你正在尝试将它作为 JSON 发布,它应该作为多部分上传发布
-
当我尝试多部分表单数据的内容类型时,我收到此错误“无法读取请求表单。缺少内容类型边界。”
标签: c# json asp.net-core