【问题标题】:form submit with ajax including file upload Asp.net [duplicate]使用 ajax 提交表单,包括文件上传 Asp.net [重复]
【发布时间】:2013-06-04 17:57:13
【问题描述】:

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

【问题讨论】:

  • 来自serialize 的 jQuery 文档:“来自文件选择元素的数据未序列化。”
  • 那么如何从文件字段中获取数据?
  • 这已在 SO 上多次介绍过。例如:stackoverflow.com/questions/166221/…

标签: javascript jquery ajax file-upload


【解决方案1】:

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

您可以通过将表单的目标属性设置为页面上其他地方的不可见 iframe 进行常规表单发布来伪造 ajax 上传。这使用户觉得页面没有重新加载。有一些 javascript 库可以为您执行此操作,例如 uploadify

另见this question

【讨论】:

  • 这并不完全正确,不幸的是,在 SO 上经常被引用。任何支持 File API 的浏览器都可以通过 XHR 2 级上传文件。
  • 这里的误解是filechooser输入框在没有明确用户输入的情况下无法选择文件(即无法通过JS选择)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 2014-06-06
  • 2015-09-08
  • 2013-04-11
  • 2011-12-10
  • 1970-01-01
相关资源
最近更新 更多