使用jQuery AJAX和Handler(ashx)进行文件上传无法正常工作

我正在尝试使用jQuery AJAX和通用处理程序上传图像文件。 但似乎文件没有传递给处理程序。 提交context.Request.Files[0]; 始终为null: – /

我究竟做错了什么?

HTML:

 

JS:

 $().ready(function () { $('#file').change(function () { sendFile(this.files[0]); }); }); function sendFile(file) { $.ajax({ type: 'post', url: 'FileUpload.ashx', data: file, success: function () { // do something }, xhrFields: { onprogress: function (progress) { // calculate upload progress var percentage = Math.floor((progress.total / progress.totalSize) * 100); // log upload progress to console console.log('progress', percentage); if (percentage === 100) { console.log('DONE!'); } } }, processData: false, contentType: 'multipart/form-data' }); } 

ASHX:

 public void ProcessRequest (HttpContext context) { HttpPostedFile file = context.Request.Files[0]; if (file.ContentLength > 0) { //do something } } 

管理得到这个工作:)

这是我的代码……

 ///create a new FormData object var formData = new FormData(); //var formData = new FormData($('form')[0]); ///get the file and append it to the FormData object formData.append('file', $('#file')[0].files[0]); ///AJAX request $.ajax( { ///server script to process data url: "fileupload.ashx", //web service type: 'POST', complete: function () { //on complete event }, progress: function (evt) { //progress event }, ///Ajax events beforeSend: function (e) { //before event }, success: function (e) { //success event }, error: function (e) { //errorHandler }, ///Form data data: formData, ///Options to tell JQuery not to process data or worry about content-type cache: false, contentType: false, processData: false }); ///end AJAX request 

当我实施这样的事情时,我会使用

 var fd = new FormData(); fd.append(file.name,file); 

并在ajax调用中,发送fd