JQuery Ajax从客户端上传文件和其他值

时间:2016-03-03 21:15:15

标签: c# jquery asp.net .net asp.net-mvc

我需要将文件上传到服务器并发送GUID值,这两者都是完成操作所必需的。

是否可以使用一个$.ajax语句发送两者?

这是我使用

上传操作方法的一小部分
[HttpPost]
public ActionResult Upload()
{
  HttpPostedFileBase file = Request.Files[0];
}

这是我用来将文件发送到服务器的Javascript代码的片段

function upload() {
  var formData = new FormData();
  var totalFiles = document.getElementById("FileUpload").files.length;

  for (var i = 0; i < totalFiles; i++) {
    var file = document.getElementById("FileUpload").files[i];

    formData.append("FileUpload", file);
  }

  $.ajax({
    type: 'post',
    url: '/myController/Upload',
    data: formData,
    dataType: 'json',
    contentType: false,
    processData: false,
    success: function (response) {
      alert('succes!!');
    },
    error: function (error) {
      alert("errror");
    }
  });
}

此代码运行良好。该文件按预期上传,但现在我需要将GUID发送到同一个控制器(上传),所以我想知道我是否可以使用相同的$.ajax语句发送带有该文件的GUID?

1 个答案:

答案 0 :(得分:9)

function upload() {
  var formData = new FormData();
  var totalFiles = document.getElementById("FileUpload").files.length;

  for (var i = 0; i < totalFiles; i++) {
    var file = document.getElementById("FileUpload").files[i];

    formData.append("FileUpload", file);
formData.append("guid", theGuid);
  }

  $.ajax({
    type: 'post',
    url: '/myController/Upload',
    data: formData,
    dataType: 'json',
    contentType: false,
    processData: false,
    success: function (response) {
      alert('succes!!');
    },
    error: function (error) {
      alert("errror");
    }
  });
}

在服务器端:

Request.Form["guid"];
Request.Files["FileUpload"];