使用所有表单数据将JQuery ajax文件上载到ASP.NET

我正在建立一个网站,其中有一个职业网页,其中包含用于恢复上传的输入文件HTML控件。 使用JQuery将表单值POST到ASPX页面时,除了文件上载外,一切正常。 如何使用JQuery在一个AJAX请求中发布每个字段(包括文件)? 我在Google中看到的示例只处理文件上传,而不处理其他字段。 这是我的JQuery,用于文件上传的ASPX没有制作。

 $(document).ready(function(e) { // File variable var files; // Add events $('#resume').on('change', prepareUpload); // Grab the files and set them to our variable function prepareUpload(event) { files = event.target.files; } $( "#submit_btn" ).click(function( ) { var fileData = new FormData(); $.each(files, function(key, value) { fileData.append(key, value); }); var formMessage = tinyMCE.get('message').getContent(); var formName = $('.contact-container #name').val(); var formPhone = $('.contact-container #phone').val(); var formEmail = $('.contact-container #email').val(); var formApplyFor = $('.contact-container #applyfor').val(); // Get some values from elements on the page: var a= $.ajax({ method: "POST", url: "mail/test.aspx", processData: false, contentType: false, data: { form: 'career', name: formName , phone: formPhone, email: formEmail, applyfor: formApplyFor, resume: fileData, coverletter: window.btoa(unescape(encodeURIComponent( formMessage))) }, success: function (data) { alert('success'); }, error: function (data) { alert('err'); } }) .done(function( msg ) { alert('done'); }); //ajax end alert(a); }); //submit button end }); //document ready end  

这可能是因为你不应该单独处理它而是作为一个表单对象(formData)

在这里,您可以找到一个包含“原始”字段以及文件字段的表单的示例

https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData

我做了一个快速测试来certificate它使用ASP.NET MVC:

HTML和Javascript:

 
function submit() { var form = document.querySelector('form'); var data = new FormData(form); $.ajax({ type: "POST", url: "Home/Upload", data: data, processData: false, contentType: false }); }

ASP.NET MVC:

  public ActionResult Upload() { foreach (string file in Request.Files) { var fileContent = Request.Files[file]; if (fileContent != null && fileContent.ContentLength > 0) { var stream = fileContent.InputStream; var fileName = fileContent.FileName; //you can do anything you want here } } foreach (string key in Request.Form) { var value = Request.Form[key]; } return Content("OK"); } 

在此处输入图像描述

当然,通过绑定模型等可以做得更好……

如果您的原始字段不在表单内,我会使用append将它们添加到formData对象,然后尝试仅发送此对象。 希望这可以帮助