C# 使用onclick函数和ajax上传图像文件?

C# 使用onclick函数和ajax上传图像文件?,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我尝试使用onclick函数和ajax上传图像文件,这可能吗?我搜索关于如何上传图像,但我能看到的只有通过点击功能。但我有一个原因,这就是为什么我使用onclick函数。控制器始终为空值 @LabelFor(x=>x.ImagePath,新的{@class=“form label”}) 提交图像 这是我的jquery和ajax 函数saveImage(){ var formData=new formData(); formData.append('file',$('#files')[0].f

我尝试使用
onclick
函数和ajax上传图像文件,这可能吗?我搜索关于如何上传图像,但我能看到的只有通过点击功能。但我有一个原因,这就是为什么我使用onclick函数。控制器始终为空值


@LabelFor(x=>x.ImagePath,新的{@class=“form label”})
提交图像
这是我的jquery和ajax

函数saveImage(){
var formData=new formData();
formData.append('file',$('#files')[0].files[0]);
$.ajax({
url:'@url.Action(“索引”,“应付”)',
键入:“POST”,
数据:formData,
传统的:是的,
成功:功能(数据){
警惕(“成功”);
}
});
}
我的控制器

public ActionResult Index()
{
HttpPostedFileBase file=Request.Files[0];
string fileName=Path.GetFileNameWithoutExtension(file.fileName);
字符串扩展名=Path.GetExtension(file.FileName);
文件名=文件名+扩展名;
var ImagePath=“~/Image/”+文件名;
fileName=Path.Combine(Server.MapPath(“~/Image/”),fileName);
file.SaveAs(文件名);
返回视图();
}
尝试以下代码:

var ufiles = $("#fileInput")[0].files;
if (ufiles.length > 0) {
  if (window.FormData !== undefined) {
    var fileData = new FormData();
    //handling multiple files or single file
    for (var x = 0; x < ufiles.length; x++) {
      fileData.append(ufiles[x].name, ufiles[x]);
    }
    $.ajax({
      type: "POST",
      url: "yourUrl",
      contentType: false,
      processData: false,
      data: fileData,
      success: function (result) {
        //do something with result
      },
    });
  } else {
    alert("This browser doesn't support HTML5 file uploads!"); //bootbox dependency
  }
}
请尝试以下代码:

var ufiles = $("#fileInput")[0].files;
if (ufiles.length > 0) {
  if (window.FormData !== undefined) {
    var fileData = new FormData();
    //handling multiple files or single file
    for (var x = 0; x < ufiles.length; x++) {
      fileData.append(ufiles[x].name, ufiles[x]);
    }
    $.ajax({
      type: "POST",
      url: "yourUrl",
      contentType: false,
      processData: false,
      data: fileData,
      success: function (result) {
        //do something with result
      },
    });
  } else {
    alert("This browser doesn't support HTML5 file uploads!"); //bootbox dependency
  }
}

Ajax调用通过POST发送文件,而索引方法是GET(默认)。您需要
[HttpPost]
属性,请不要将其称为Index,请选择正确的名称。@derloopkat将尝试添加[HttpPost],但“我的文件”参数仍然为null。在ajax中,将其设置为false:
contentType:false,processData:false,
您的ajax调用在获取索引方法时通过POST发送文件(默认值). 您需要
[HttpPost]
属性,请不要将其称为索引,请选择正确的名称。@derloopkat将尝试添加[HttpPost],但“我的文件”参数仍然为空。在ajax中,将其设置为false:
contentType:false,processData:false,