我正在尝试使用ajax提交表单。表单包含文本字段和文件上载字段。问题是它提交文本但不提交文件。我的表格是
<form onsubmit ="return save();" id="postadform" enctype="multipart/form-data">
Name<input type ="text" name ="name" />
Upload image <input type="file" name="image" id ="filee"/>
<input type ="submit" value = "submit" />
</form>
<script src="~/Scripts/jquery-1.7.1.js"></script>
<script type="text/javascript">
function save() {
$.ajax({
type: 'POST', url: '/Home/saveData', data: $('#postadform').serialize(),enctype:"multipart/form-data",
success: function (x) {
//do what ever you want
},
error: function () {
alert('There is some error, plz try again!');
}
});
return false;
}
</script>
这是HomeController.cs文件的一部分:
[HttpPost]
public String saveData()
{
String name = Request["name"];
String filename = Request.Files[0].FileName; //Problem in this line.
return "Successful";
}
答案 0 :(得分:-4)
Ajax无法处理文件上传。这是因为javascript具有阻止访问用户文件系统的安全限制。这是一件好事 - 您不希望您访问的网站检出您的文件。
您可以通过执行常规表单发布来伪造ajax上传,并将表单的target属性设置为页面上其他位置的不可见iframe。这使得用户看起来该页面没有重新加载。有一些javascript库可供您使用,例如uploadify。