gpt4 book ai didi

javascript - MVC Controller 在尝试使用 Axios 发送带有 FormData 的 POST 时收到空数据

转载 作者:行者123 更新时间:2023-12-04 10:36:57 26 4
gpt4 key购买 nike

我似乎无法找出我的 Controller 接收空数据的原因。我能够到达 Controller ,但没有数据传输。当我使用 时, Controller 端一切正常 postman 使用 Body 和正确的 key /数据内容测试 API。

enter image description here

我的 Controller 方法:

[Route("home/api/files")]
public class FileController : ControllerBase
{
[HttpPost]
public async Task<IActionResult> Post([FromForm] FileModel file)
{
if (file == null)
return BadRequest("Given data is null");
if (string.IsNullOrEmpty(file.Name))
return BadRequest("File name is undefined");
if (string.IsNullOrEmpty(file.FolderPath))
return BadRequest("FolderPath is undefined");
if (file.File.Length < 0)
return BadRequest("File content is empty");
...
}
}

文件模型:
public class FileModel
{
public string Name { get; set; }
public string Extension { get; set; }
public string FolderPath { get; set; }
public IFormFile File { get; set; }
}

客户端 Axios 调用:
export function uploadFile(folderPath, data) {
console.log("upLoadFile", folderPath, data);

const formData = new FormData();
formData.set('name', data.file);
formData.set('extension', data.extension);
formData.set('folderPath', folderPath);
formData.append('file', data);

return axios.post(
"api/files",
formData,
{ headers: { 'Content-Type': 'multipart/form-data}' }})
//{ headers: { 'Content-Type': 'multipart/form-data; boundary=${form._boundary}' }})
.then((response) => {
console.log(response.data);
console.log(response.status);
})
.catch((error) => {
console.log(error);
});
}

我认为问题出在我发送的数据类型的某个地方?特别是,使用 FileModel s File属性(property)类型 IFormFile .欢迎所有想法!

The used version of Axios 0.19.2

最佳答案

我相信主要问题与我最初尝试的数据类型有关。重要的是给定的 data是正确的格式/类型。

正确定义数据如下有帮助:

const file = new Blob([data.contents], { type: 'text/csv' });

const formData = new FormData();
formData.set('Name', data.file);
formData.set('Extension', data.extension);
formData.set('FolderPath', folderPath);
formData.append('File', file);

const requestConfig = {
headers: {
"Content-Type": "multipart/form-data"
}
};

formData定义如上,以下 Axios POST 不会出现问题或 Controller 更改, [FromForm]按预期工作。
return axios.post(
"api/files",
formData,
requestConfig)
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error);
});

关于javascript - MVC Controller 在尝试使用 Axios 发送带有 FormData 的 POST 时收到空数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60130442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com