Javascript 将Excel文件从React上载到C#ASP.NET核心后端

Javascript 将Excel文件从React上载到C#ASP.NET核心后端,javascript,excel,reactjs,fetch,Javascript,Excel,Reactjs,Fetch,我正试图将一个文件从react前端上传到C#后端。我使用drop zone获取文件,然后调用api帮助程序发布文件,但当我尝试不同的方法时,会出现不同的错误。我不确定确切的标题应该是什么,确切的我应该发送什么,但我得到两个明显的错误。如果我没有设置内容类型,则会出现415(不支持的媒体类型)错误。如果我将内容类型指定为多部分/表单数据,则会出现500内部服务器错误。当内容类型为application/json时,我会遇到相同的错误。该url已过时,我确信它是正确的。我不确定该文件是否应该像我所做

我正试图将一个文件从react前端上传到C#后端。我使用drop zone获取文件,然后调用api帮助程序发布文件,但当我尝试不同的方法时,会出现不同的错误。我不确定确切的标题应该是什么,确切的我应该发送什么,但我得到两个明显的错误。如果我没有设置内容类型,则会出现415(不支持的媒体类型)错误。如果我将内容类型指定为多部分/表单数据,则会出现500内部服务器错误。当内容类型为application/json时,我会遇到相同的错误。该url已过时,我确信它是正确的。我不确定该文件是否应该像我所做的那样作为文件[0][0]追加,或者作为文件[0]追加,因为它是一个数组,但我相信它应该是第一个。欢迎任何建议:)以下是我的api post helper代码:

export const uploadAdminFile = (file, path, method = 'POST', resource = 
config.defaultResource) => {
const url = createUrl(resource, path);

const data = new FormData();


data.append('file', file[0][0]);
data.append('filename', file[0][0].name);

const request = accessToken =>
fetch(
  url,
  {
    method,
    mode: 'cors',
    withCredentials: true,
    processData: false,
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json', //'multipart/form-data',
      Authorization: `Bearer ${accessToken}`,
    },
    body: data,
  })
  .then(res => res.json())
  .then(success => console.log('API HELPER: file upload success: ', success)
    .catch(err => console.log('API HELPER: error during file upload: ', err)));


return sendRequest(request, resource);

})

感谢您的帮助和建议,这是一个后端问题,但即使是在这个过程中,我还是学到了很多。我将在这里发布我的工作代码,以防有人发现它有用

export const uploadAdminFile = (file, path, resource=config.defaultResource) => {
  const url = createUrl(resource, path);
  const formData = new FormData();

  formData.append('file', file[0][0]);
  formData.append('filename', file[0][0].name);

  const request = accessToken =>
    fetch(url,
    {
      method: 'POST',
      headers: {
        Accept: 'application/json',
        Authorization: `Bearer ${accessToken}`,
    },
    body: formData,
  });

  return sendRequest(request, resource);
};

如前所述,不需要单独发送文件名,也可以省略计数。我以这种方式索引文件,因为我从dropzone获取它作为一个数组,并且我只需要一个文件(数组中的第一个文件)。我希望这对其他人有所帮助,这里有一个链接,指向(好信息)和一篇关于使用的好文章。

“我遇到了一个500内部服务器错误。”…您是否调查了该错误的原因?这意味着服务器端代码不知何故崩溃了。您需要调试服务器代码,检查日志等,以找出实际的故障是什么。谢谢,我理解。我目前没有权限这样做,因此我想问是否有人可以帮助我验证/验证、确认或否认我所做的是“正确的”/如果这应该在前端工作,或者如果我有明显的错误,如果你试图上传文件,那么内容类型肯定不会是JSON。但是,一个更大的问题似乎是fetch函数中的
init
属性不需要您在那里使用的大多数属性名。看见您是否将它与jQuery的$.ajax()混淆了?在我看来,它们就像jQuery风格的选项。同样
方法
应该是
方法:“POST”
或其他什么。没有名字的值本身是无用的。它们只使用默认值,所以我不必显式地发送它们。使用ES^syntax,如果名称相同,则可以将key:value缩短为一个值,从而与method:method相同,