2015-01-13 126 views
3

我有一個小表單,可以讓用戶上傳一個文件。表格如下。C# - 什麼對象類型是FormData

<form action="/Interviews/Create" enctype="multipart/form-data" id="createInterviewForm" method="post"> 
<div class="form-group"> 
    <div class="col-xs-6"> 
     <label>File Upload:</label> 
     <input type="file" id="txtInterviewUploadFile"> 
    </div> 
</div> 
</div> 
<div class="form-group"> 
    <div class="col-md-10"> 
     <input type="submit" value="Create" class="btn btn-primary" /> 
     <input type="submit" value="Cancelar" class="btn btn-primary" id="btnCancelInterviewCreation" /> 
    </div> 
</div> 

我通過Ajax上傳文件,所以我有以下代碼

$("form#createInterviewForm").submit(function (e) { 
     e.preventDefault(); 

     var fd = new FormData($(this)[0]); 

     $.ajax({ 
      url: '/Interviews/AjaxCreate', 
      data: fd, 
      processData: false, 
      contentType: false, 
      type: 'POST', 
      success: function (data) { 
       alert(data); 
      } 
     }); 
    }); 

在我的控制器,我有這樣的事情

[HttpPost] 
public JsonResult AjaxCreate(??What datatype?? postedData) 
{ 
    return Json(true); 
} 

問題 當我提交時,帖子到達我的控制者。我的問題是我似乎無法弄清楚FormData的對象類型是什麼。誰能幫我嗎?

+1

通常你創建一個表示FORMDATA的典範。 –

回答

1

所以,我終於得到了這個工作。這是我做過什麼:

在阿賈克斯我有以下幾點:

$("form#createInterviewForm").submit(function (e) { 
     e.preventDefault(); 

     var formData = new FormData($(this)[0]); 
     formData.append('file', $("#txtInterviewUploadFile")[0].files[0]); 

     $.ajax({ 
      url: "/Interviews/AjaxCreate", 
      type: 'POST', 
      data: formData, 
      contentType: false, 
      processData: false, 
      success: function (data) { 
       alert(data) 
      } 
     }); 

     return false; 
    }); 

這將發佈所有表單輸入和文件輸入。

在控制器上的所有我必須做的是使用的Request.Form [「鑰匙」]和Request.Files訪問所有信息

+0

你能提供一個它如何看待控制器端的例子嗎? – Arti

+0

在控制器中獲取文件,您可以使用類似var uploadedFile = Request.Files [0];來訪問。要獲取屬性,可以使用例如Request.Form [「Name」] – Wheels

0

結帳HttpPostedFileBaseLink

(From MSDN) Serves as the base class for classes that provide access to individual 
files that have been uploaded by a client. 

你的控制器動作將是:

[HttpPost] 
public JsonResult AjaxCreate(HttpPostedFileBase postedData) 
{ 
    return Json(true); 
} 
+0

我更改了我的控制器以匹配您發佈的內容,但postingData爲null。 – Wheels