使用Ajax和ashx的文件上传在IE中不起作用

问题描述 投票:1回答:1

我正在使用ajax和ashx文件上传文件,并且该文件在Internet Explorer(IE11)之外的其他浏览器中也能正常工作,我也已经在网上搜索并尝试了不同的建议,但仍然失败。

这是我的Ajax代码:

function uploadFile() {
        var formData = new FormData();
        formData.append('file', $('#fileupload')[0].files[0]);
        $.ajax({
            type: 'post',
            url: 'fileUploader.ashx',
            data: formData,
            success: alert("Success!"),
            processData: false,
            cache: false,
            contentType: false,
            error: function () {
                alert("Something went wrong!");
            }
        });
}

这是我的ashx代码:

public class fileUploader : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        try
        {
            string dirFullPath = HttpContext.Current.Server.MapPath("~/Attachment_/");
            string[] files;
            files = System.IO.Directory.GetFiles(dirFullPath);
            string str_file = "";

            foreach (string s in context.Request.Files)
            {
                HttpPostedFile file = context.Request.Files[s];
                string fileName = file.FileName;
                string fileExtension = file.ContentType;

                if (!string.IsNullOrEmpty(fileName))
                {
                    //save to path
                    fileExtension = Path.GetExtension(fileName);
                    str_file = "Attachment_" +fileName;
                    string pathToSave = HttpContext.Current.Server.MapPath("~/Attachment_/") + str_file;
                    file.SaveAs(pathToSave);
                }
            }


            context.Response.Write(str_file);
        }
        catch (Exception)
        {
            throw;
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

我哪里出错了?我在其他浏览器上特别是chrome上尝试并测试了此代码,以上代码可以正常工作,但在IE上失败。它也不会引发任何错误,并显示alert("Success")消息,但是文件没有被上传。预先感谢您的帮助。

c# ajax internet-explorer file-upload ashx
1个回答
0
投票

代替使用

string fileName = file.FileName;

使用

Path.GetFileName(file.FileName)
© www.soinside.com 2019 - 2024. All rights reserved.