Ajax File Uploader无法在IE9中运行

时间:2013-02-08 10:57:06

标签: ajax asp.net-mvc-3 jquery

我的MVC3应用程序中有一个ajax文件上传器,它在Firefox和Chrome中运行得非常好,但它在IE9和IE8中不起作用。当我上传文件时,它在IE中的服务器端给我错误的文件名。

这是我的up-loader代码

<script type="text/javascript">
    function InitializeUploader() {
            Dname = [];
            var uploader = new qq.FileUploader({
                multiple: true,
                element: document.getElementById('file-uploader'),
                action: '@Url.Action("UploadDocument","Project")',
                debug: true,
                params: { id: $("#Id").val() },
                onSubmit: function (id, fileName) {
                },

                onComplete: function (id, fileName, responseJSON) {
                    alert(responseJSON.fileName);
                    $("#DocumentName").val(responseJSON.fileName);
                    fileSize = responseJSON.size;
                    Dname.push(responseJSON.fileName);
                    type = responseJSON.type;
                }

            });
        }  

</script>
<form method="post" enctype="multipart/form-data" action="" style="margin-left: 4px;
            margin-top: 0px;" id="documentUploadForm">
            <div id="file-uploader">
                <input type="file" id="uplodfile" />
                <input class="button" type="button" value="Upload" id="UploadDocbtn" style="float: right;
                    width: 100px;" /></div>
            </form>

服务器端操作

 [HttpPost]
  public ActionResult UploadDocument(string qqfile, int id)
  {

     // code for saving File 
  }

当我在IE中运行此代码而不是在 qqfile 参数中提供文件名时,它会给我像 System.Web.HttpPostedFileWrapper 这样的文件,并且文件也无法正确保存。 我没有得到这个浏览器问题或IE阻止一些脚本。 那么我如何在IE中使用ajax文件加载器保存文件?

1 个答案:

答案 0 :(得分:1)

实际上,IE看起来应该像它应该的那样工作。 而不是UploadDocument(string qqfile, int id)你应该UploadDocument(HttpPostedFileWrapper qqfile, int id)  文件应保存为qqfile.SaveAs("path to file")

不清楚您现在获得了什么文件名。可能这是转换HttpPostedFile到字符串的结果,并且IE不返回该转换返回文件名而不是原始对象类型所需的一些信息。 尝试做这样的事情:

 [HttpPost]
  public ActionResult UploadDocument(System.Web.HttpPostedFileWrapper qqfile, int id)
  {
     qqfile.SaveAs("filename");
     // code for saving File 
  }

它应该可以在所有浏览器中正常工作