我正在使用JQuery.AJAX将文件上传到ASP.NET 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)
{
...
}
但每次调用Index操作时,HttpPostedFileBase
对象都为空。
我已经在SO中阅读了有关此问题的所有主题,但未找到答案。我输入了正确的名称,它与控制器中的参数名称相符。代码有什么问题,所以对象总是空的?
答案 0 :(得分:2)
这个问题的正确代码: 视图:
<form>
<input type="file" size="45" name="file" id="file">
</form>
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');
}
});
}
</script>
最后是HomeController.cs的代码:
public ActionResult Index (HttpPostedFileBase file)
{
...
}