无法使用formData将多个文件发送到服务器

问题描述 投票:0回答:1

我正在尝试从JavaScript附加多个文件,以将它们发送到后端(.net核心Web API)。

这是我在服务器上需要文件的方法:

[HttpPost("upload-files")]
public async Task<IActionResult> PostAsync([FromForm]InsertFilesRequest request)
{
    var result = await _fileProcessorService.Upload(request);
    return Ok(result);
}

这里是InsertFilesRequest类:

public class InsertFilesRequest
{
    public List<InsertRequest> FileItems { get; set; }
}

如您所见,我正在接收称为InsertRequestFileItems列表

这是我正在使用javascript进行的操作:

export const sendFiles = data => {
  const formData = new FormData();
  formData.append('FileItems', data.files); // data holds list of files
  return axiosWrapper.request({
    url: '/files/upload-files',
    method: 'POST',
    data: formData,
  });
};

我也尝试过:

export const sendFiles = data => {
  const f = new FormData();

  let fileItems = [];

  for (let i = 0; i < files.length; i++) {
    var repositoryItem = {
      file: files[i],
    };

    fileItems.push(repositoryItem);
  }

  return axiosWrapper.request({
    url: '/files/upload-files',
    method: 'POST',
    data: f,
  });
};

这两个示例都不起作用,我真的不知道如何将多个文件发送到服务器,总计数为0。

谢谢!

欢呼声

javascript .net-core asp.net-core-webapi multipartform-data form-data
1个回答
0
投票

您可以尝试这个

  1. data:应为document.getElementById()
const sendFiles = data => {
   const formData = new FormData();
   for(let i = 0; i < data.files.length; i++){
         formData.append(`filename${i}`, data.files[i]);
    }

   fetch('/files/upload-files',{
      method:'POST',   
      body: formData,
     })
   .then(res => res.json())// to parse the response body to json format.
   .then(res =>{

    // your response from the server
   })
   .catch(error => {
    //to handle errors
   })
}

  1. 在您的后端服务器中,您的API应该收到类型为[[multipart / form-data]的请求”
  2. 您可以通过文件名访问文件

一个github帖子,显示您如何接收数据here

© www.soinside.com 2019 - 2024. All rights reserved.