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