【问题标题】:HttpPostedFile in File Upload process is NULL if I use AJAX如果我使用 AJAX,文件上传过程中的 HttpPostedFile 为 NULL
【发布时间】:2011-04-23 02:12:01
【问题描述】:

我在我的 asp.net MVC 项目中使用文件上传功能。 在我开始在我的页面上使用一些 AJAX 功能之前,它一直很好用。

Ajax 页面上的 HttpPostedFile 始终为 NULL。

如何在我的页面上调用 ajax 来解决这个问题?

【问题讨论】:

    标签: asp.net-mvc ajax file-upload


    【解决方案1】:

    因为您无法使用 AJAX 上传文件,所以我向您推荐出色的 jquery form plugin,它允许您对表单进行 ajaxify 并支持 file uploads。在幕后,插件会生成一个隐藏的 iframe 来处理上传,并且对您完全透明:

    <form id="myForm" action="/home/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" id="file" />
        <input type="submit" value="upload" />
    </form>
    

    控制器:

    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase file)
    {
        // TODO: handle the file here
        return PartialView("success");
    }
    

    最后对表单进行ajaxify:

    $(function() {
        $('#myForm').ajaxForm(function(result) {
            alert('thank you for uploading');
        });
    });
    

    还要注意在控制器操作中使用HttpPostedFileBase 而不是HttpPostedFile。作为一个抽象类,这将简化您的单元测试。

    【讨论】:

    【解决方案2】:

    不可能使用 ajax 发布文件上传,除非您跳过一些障碍 - 例如从 IFrame 中发布子文件,或使用基于 Flash 的解决方案之一。见https://stackoverflow.com/questions/254831/asp-net-free-ajax-file-upload-control

    【讨论】:

      【解决方案3】:

      XHR 无法归档帖子。

      Asnc 文件上传使用 iframe 或一些库。

      【讨论】:

        猜你喜欢
        • 2012-01-02
        • 1970-01-01
        • 1970-01-01
        • 2020-07-12
        • 2016-01-09
        • 2011-06-10
        • 1970-01-01
        • 2017-11-19
        • 1970-01-01
        相关资源
        最近更新 更多