Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC控制器在尝试使用Axios发送带有FormData的POST时接收空数据_Javascript_C#_Axios_Asp.net Core 2.0 - Fatal编程技术网

Javascript MVC控制器在尝试使用Axios发送带有FormData的POST时接收空数据

Javascript MVC控制器在尝试使用Axios发送带有FormData的POST时接收空数据,javascript,c#,axios,asp.net-core-2.0,Javascript,C#,Axios,Asp.net Core 2.0,我似乎无法找出控制器接收空数据的原因。我能够到达控制器,但没有数据传输。当我使用Postman使用Body和正确的键/数据内容测试API时,在控制器端一切都正常 我的控制器方法: [Route("home/api/files")] public class FileController : ControllerBase { [HttpPost] public async Task<IActionResult> Post([FromForm] FileModel file)

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

我的控制器方法:

[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");
    ...
  }
}
以及客户端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
属性类型
ifformfile
。欢迎所有想法

已使用的Axios 0.19.2版本


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

按照以下步骤正确定义数据:

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工作正常,控制器没有问题或更改,
[FromForm]
工作正常

return axios.post(
  "api/files",
  formData,
  requestConfig)
.then((response) => {
  console.log(response.data);
})
.catch((error) => {
  console.log(error);
});

您是否尝试将
[FromForm]
替换为
[FromBody]
?使用
[FromBody]
我收到控制器的回复:
415不支持的媒体类型
。邮递员和Axios的回复是一样的。尝试将您的
内容类型
更改为
application/json
,基于Hmm,我尝试了以下方法:
{headers:{'content type':'application/json'}}
,但没有产生任何影响。我仍在联系控制器,但
文件
所有属性均为
嗯,使用
[FromBody]
并将
内容类型
设置为
应用程序/json
,然后由
邮递员
尝试以
的形式发送数据。请注意将数据类型设置为
JSON(应用程序/类型)
-->
return axios.post(
  "api/files",
  formData,
  requestConfig)
.then((response) => {
  console.log(response.data);
})
.catch((error) => {
  console.log(error);
});