使用ajax提交表单,包括文件上传Asp.net

时间:2013-06-04 17:57:13

标签: javascript jquery ajax file-upload

我正在尝试使用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";
}

1 个答案:

答案 0 :(得分:-4)

Ajax无法处理文件上传。这是因为javascript具有阻止访问用户文件系统的安全限制。这是一件好事 - 您不希望您访问的网站检出您的文件。

您可以通过执行常规表单发布来伪造ajax上传,并将表单的target属性设置为页面上其他位置的不可见iframe。这使得用户看起来该页面没有重新加载。有一些javascript库可供您使用,例如uploadify

另见this question