我正在努力使用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文件,我只想将文件保存到我的文件系统中。
我尝试将原始文件和解析的文本与不同的媒体类型(例如text/plain、text/xml和application/xml)结合起来上传
我还试着添加了接受语言
我还尝试了微软留档中的建议方法,该方法具有以下功能标题:公共异步任务
我试着和邮递员一起调试,上传了一张简单的图片,这给了我同样的错误。
首先,关于您的前端,您需要发送allText
常量,而不是rawFile
。所以你的代码会是这样的:
axios.post(
url,
allText,
{
headers: {
'Content-Type': 'application/xml'
}
}
)
现在,对于您的后端
,
ASP。默认情况下,NET core
无法识别xml
。您需要转到文件启动。位于应用程序根目录和方法ConfigureServices
上的cs需要添加服务。AddXmlSerializerFormatters()
。因此,您的代码如下所示:
services
.AddMvc()
.AddXmlSerializerFormatters()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1); // this depends on your .net core version
您还必须为要解析的
xml
创建一个类模型。例如,如果您有这样一个xml
<document>
<id>12345</id>
<content>This is a Test</content>
<author>vchan</author>
</document>
你应该有一个类模型像下面的一个
[XmlRoot(ElementName = "document", Namespace = "")]
public class DocumentDto
{
[XmlElement(DataType = "string", ElementName = "id")]
public string Id { get; set; }
[XmlElement(DataType = "string", ElementName = "content")]
public string Content { get; set; }
[XmlElement(DataType = "string", ElementName = "author")]
public string Author { get; set; }
}
另外,
. net
可以自己理解原始的xml
主体,因此,您的控制器的操作应该如下所示
[HttpPost]
public IActionResult TestMethod([FromBody] DocumentDto xml) {
// Do something with the xml
}
请注意,您应该始终对请求使用
HTTP标头
Content-Type: Application/xml
,以便. net
理解、解析和反序列化它。你不需要为你要实现的每个不同的动作重新发明轮子,. net
会为你做到这一点!
如果您这样编写后端,它将始终尝试将内容序列化到JSON,因为默认的序列化程序。如果发送内容类型XML,它将不知道如何将XML反序列化为对象。
这是我们通常处理文件上载的方式:
[HttpPost]
public async Task<IActionResult> ReceiveFileUpload(CancellationToken cancellationToken = default(CancellationToken))
{
var contentType = Request.ContentType; // Or HttpContext.Request
var stream = Request.Body; // Or HttpContext.Request
// Process file stream in whatever way, e.g. XmlDocument.Load(stream);
}
这至少应该使它工作在例如。邮差。
您的axios客户端看起来几乎正常,需要注意以下几点:
alltext
,而不是rawFile
axios.post(url, content, {
headers: {
"Content-Type": "application/xml"
}
})
<input type='file' accept='text/plain' onchange='openFile(event)'>
var openFile = function(event) {
var input = event.target;
var text = "";
var reader = new FileReader();
var onload = function(event) {
text = reader.result;
console.log(text);
};
reader.onload = onload;
reader.readAsText(input.files[0]);
};
(https://codepen.io/mlasater9/pen/jqQdOM/)
我在后端使用spring-boot 2.0.4,在前端使用vue 2.5.16 / axios 0.18.0,我希望将PDF文件上传到后端数据库,并从前端检索它们。 最初,我的灵感来自于spring部分的这个例子:https://grokonez . com/frontend/angular/angular-6/angular-6-client-upload-files-download-file
本文向大家介绍vue+axios实现文件下载及vue中使用axios的实例,包括了vue+axios实现文件下载及vue中使用axios的实例的使用技巧和注意事项,需要的朋友参考一下 功能:点击导出按钮,提交请求,下载excel文件; 第一步:跟后端童鞋确认交付的接口的response header设置了 以及返回了文件流。 第二步:修改axios请求的responseType为blob,以pos
对于要添加到formData中的文本值,我使用类Blob,这样文件和文本值都是相同的。 在webservice java中,我有一个作为参数,并且只有文本值,我有我的数据。如果我在axios post请求中添加该文件,则会出现错误500并且服务器没有记录任何事件,我认为它会在与的映射中崩溃。 然后我尝试使用,但问题是一样的。 如果我像预期的那样只使用String作为param,那么在axios p
附注。当我使用@requestParam(Name=“file”,required=true)MultipartFile文件时,我得到错误POST http://localhost:8080/single-file 400(错误请求),看起来spring无法从FormData获得MultipartFile文件。在后端,我没有得到任何错误,只有MultipartFile文件=null
我需要使用python从组织终端下的本地上传文件到AWS S3存储桶。因为我是大型机资源,所以我对python不太了解,但是,当我尝试阅读一些内容时,我知道boto3可以帮助我。有人能帮我开始吗?
问题内容: 我正在创建一个程序,通过读取同一游戏/应用程序的.jad文件中指定的URL,该程序将从Web服务器下载.jar(java)文件。我正在使用Python 3.2.1 我设法从JAD文件中提取JAR文件的URL(每个JAD文件都包含指向JAR文件的URL),但是正如您所想象的,提取的值是type()字符串。 相关功能如下: 但是,我总是得到一个错误,指出上面函数中的类型必须是字节,而不是字