【发布时间】:2020-08-10 07:24:11
【问题描述】:
我正在努力将带有 axios 的 xml 文件上传到我的 asp .net 服务器。我正在使用来自 vue 端的以下代码来获取一个 xml 文件,该文件正在工作,然后将其上传到我的服务器:
uploadXmlFile(file: any) {
const rawFile = new XMLHttpRequest();
rawFile.open('GET', file, false);
rawFile.onreadystatechange = () => {
if (rawFile.readyState === 4) {
if (rawFile.status === 200 || rawFile.status === 0) {
const allText = rawFile.responseText;
axios.post(`${url}`, rawFile, {
headers: {
'Content-Type': 'application/xml',
'Accept-Language': 'application/xml',
},
});
}
}
};
rawFile.send(null);
}
在 asp .net 端我得到了这个功能:
[HttpPost]
public IActionResult Post(object xml)
{
// Do something with the xml
...
}
上传文件会导致代码 415:不支持的媒体类型。
我发现了一些将 xml 格式化程序添加到我的项目的建议,但没有用,而且我不想解析 xml 文件,我只想将文件保存到我的文件系统。
我尝试结合不同的媒体类型上传 rawFile 和解析的文本,例如text/plain、text/xml 和 application/xml
我也尝试添加接受语言
我还使用此函数头尝试了 microsoft 文档中建议的方法:
public async Task<IActionResult> OnPostUploadAsync(List<IFormFile> files)
我尝试使用 Postman 进行调试,上传了一张简单的图片,但出现了同样的错误。
【问题讨论】:
-
不要不发送同步的XMLHttpRequests!
-
@AluanHaddad 是的,我知道,但这不应该是这里的问题,对吧?我的意思是我在上传之前获得了 xml 文件。一旦这些东西起作用了,我会改进它......
-
@TobiasW 您能否尝试再次执行脚本,但这次从浏览器的开发人员工具和网络选项卡上传屏幕截图。我主要想看看请求标头和正文。我认为请求或操作的参数类型(
object)有错误。 -
@vchan 我不太确定如何使用浏览器开发工具上传图片。但是我也在用 Postman 进行调试,并尝试用 Postman 上传图像,这也不起作用并给了我同样的错误
-
@vchan 一旦我将我的正文更改为 json 对象,它就可以工作,但所有其他内容类型都被阻止
标签: javascript c# typescript vue.js asp.net-core