2013-07-19 30 views
2

mvc4的控制器動作應該如何像發佈這樣的文件?Javascript上傳文件MVC4動作

的Html

<form enctype="multipart/form-data"> 
    <input name="file" type="file" /> 
    <input type="button" value="Upload" /> 
</form> 

的Javascript

$(':button').click(function(){ 
    var formData = new FormData($('form')[0]); 
    $.ajax({ 
     url: 'api/fileupload', //server script to process data 
     type: 'POST', 
     xhr: function() { // custom xhr 
      var myXhr = $.ajaxSettings.xhr(); 
      if(myXhr.upload){ // check if upload property exists 
       myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload 
      } 
      return myXhr; 
     }, 
     //Ajax events 
     beforeSend: beforeSendHandler, 
     success: completeHandler, 
     error: errorHandler, 
     // Form data 
     data: formData, 
     //Options to tell JQuery not to process data or worry about content-type 
     cache: false, 
     contentType: false, 
     processData: false 
    }); 
}); 
+1

如果要發佈到PHP ,ASP.NET MVC控制器不會爲你做很多事情好:) –

+0

Ups複製和粘貼。 –

+0

這將取決於$ .ajaxSettings.xhr()是什麼以及它如何將文件發送到服務器。你似乎正在測試一些'upload'屬性。看起來像一些定製的東西。只需使用FireBug來查看使用什麼編碼以及如何通過電線傳輸文件。如果它使用'multipart/form-data',那麼它很容易檢索它。 –

回答

4

貌似正常的MVC行動上傳文件將工作:

[HttpPost] 
public ActionResult fileupload(HttpPostedFileBase file) 
{ 
    // do something with file.InputStream 
} 
+0

對於multipart/form-data沒有mediatypeformatter。可以幫助:http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2 –