问题:我正在使用母版页和包装表单编写的网站上工作。我正在编写的页面需要将文件上传到服务器进行验证。
需要什么:一种不使用表单提交文件的方法,并在WebMethod
的服务器上接收该表单。
我尝试了什么:使用XMLHttpRequest
将FormData
发送到WebMethod
。创建FormData
并附加文件,如下所示:
let dataXML = new FormData();
dataXML.append("xml", $("#fileUpload")[0].files[0]);
像这样发送:
let request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === 4 && request.status === 200)
// Do stuff with the request.responseText
};
request.open("POST", PageName + "/" + Route, true);
request.send(dataXML);
这样的webMethod
:
[WebMethod]
public static string myWebMethod(MultipartFormDataContent Files)
{
// Do stuff with the file
}
WebMethod
根本没有运行。我假设这是WebMethod
及其参数的问题。如果我查看Page_Init()
(因为它现在正在返回页面html而不是运行我的WebMethod
而运行)我可以在HttpContext.Current.Request.Files[0]
中看到该文件,但我不知道如何使WebMethod
运行。
在有人说之前:是的,我尝试过JQuery AJAX,但它没有什么区别,问题似乎不是客户端(文件是在两种情况下都上传的)。我并不关心JQuery AJAX和XMLHttpRequest。