我想將文件異步發佈到服務器而不發佈表單。我有以下代碼:AJAX:將文件異步發佈到服務器
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集合不包含文件,我找不出原因。任何幫助讚賞。
雖然可以不使用表格上傳文件,但爲什麼要這麼做呢?如果要將完整頁面的帖子保存回來,則可以僅使用部分表單。以下是一個示例:http://stackoverflow.com/questions/21675176/asp-net-mvc3-upload-a-file-from-a-partial-view-and-fill-the-corresponding-field – wazdev
http:// stackoverflow.com/questions/15680629/mvc-4-razor-file-upload –
@wazdev我不想提交表格,我想搶先上傳文件,而用戶仍然在他們的工作瀏覽器並使用它做一些事情並將結果返回給瀏覽器。再次,我想要做的就是將文件自行異步發送到服務器,並讓服務器將一些關於該文件的元數據返回給我將動態顯示的瀏覽器。 –