【发布时间】:2016-06-20 11:44:11
【问题描述】:
我想在不发布表单的情况下将文件异步发布到服务器。我有以下代码:
var fileInput = document.getElementById('FileInput');
var file = fileInput.files[0];
var formData = new FormData();
formData.append('file', file, file.name);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://servername/controllername/AnalyseFile', true);
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
xhr.send(formData);
但是,当该方法在服务器上执行时,帖子正文不包含任何文件。以下来自 ASP.NET MVC4:
[HttpPost]
public JsonResult AnalyseFile()
{
int filesCount = Request.Files.Count;
if(filesCount == 0) { throw new Exception('no files...'); }
// do stuff
}
Files 集合不包含文件,我不知道为什么。任何帮助表示赞赏。
【问题讨论】:
-
虽然可能在不使用表单的情况下上传文件 - 你为什么要这样做?如果要保存整页回帖,您可以只使用部分表单。这是一个示例:stackoverflow.com/questions/21675176/…
-
@wazdev 我根本不想提交表单,我想在用户仍在浏览器中工作时抢先上传文件并用它做一些事情并返回结果到浏览器。同样,我要做的就是将文件异步发布到服务器,并让服务器将有关文件的一些元数据返回给我将动态显示的浏览器。
-
@DavidPine 感谢您的回答,但据我所知,这只是将表单提交到服务器。我想将文件异步发送到服务器并让它分析文件并发送回一些元数据而不提交表单。
标签: javascript c# ajax asp.net-mvc-4 asynchronous