2015-10-05 3 views
1

Я использую JQuery.AJAX для загрузки файлов на сервер в ASP.NET MVC 5. код моего зрения:HttpPostedFileBase равна нулю при использовании AJAX в ASP MVC 5

<input type="file" size="45" name="file" id="file"> 

Javascript является :

<script> 
$('#file').on("change", function() { 
    var formdata = new FormData($('form').get(0)); 
    CallService(formdata); 
}); 
function CallService(file) { 
    $.ajax({ 
     url: '@Url.Action("Index", "Home")', 
     type: 'POST', 
     data: file, 
     cache: false, 
     success: function (color) { 
      ; 
     }, 
     error: function() { 
      alert('Error occured'); 
     } 
    }); 
} 

И, наконец, код из HomeController.cs:

 public ActionResult Index (HttpPostedFileBase file) 
    { 
     ... 

    } 

Но каждый раз, когда вызывается действие индекса, объект HttpPostedFileBase пуст. Я прочитал все темы по этому вопросу в формате SO, но не смог найти ответ. Я ввел правильное имя и оно соответствует имени параметра в контроллере. Что не так с кодом, так что объект всегда пуст?

+0

Может ли это быть 'data: $ (this) .serialize(),' вместо 'data: {'file': $ (this) .serialize()},'. –

+0

Также попробуйте [Fiddler] (http://www.telerik.com/fiddler) перехватить запросы и посмотреть, что на самом деле отправляется на сервер. –

+0

@RDay Изменение данных ничего не изменило и оно по-прежнему равно нулю. Результат Скрипаче: Запрос Count: 1 Bytes Sent: 382 \t \t (заголовки: 382, ​​тело: 0) Получено байт: 0 \t \t (заголовки: 0, тело: 0) РЕАКЦИЯ БАЙТ (by Content-Type) -------------- ~ headers ~: 0 –

ответ

1

Так правильный код для этой проблемы: Вид:

<form> 
<input type="file" size="45" name="file" id="file"> 

Javascript:

<script>$('#file').on("change", function() { 
var formdata = new FormData($('form').get(0)); 
CallService(formdata);});function CallService(file) { 
    $.ajax({ 
     url: '@Url.Action("Index", "Home")', 
     type: 'POST', 
     data: file, 
     cache: false, 
     processData: false, 
     contentType: false, 
     success: function (color) { 
      ; 
     }, 
     error: function() { 
      alert('Error occured'); 
     } 
    }); 
} 

И, наконец, код из HomeController.cs:

public ActionResult Index (HttpPostedFileBase file) 
{ 
    ... 

} 
Смежные вопросы