formdata 上传文件 后台ashx 怎么获取不到文件 帮忙看看什么问题

后台ashx 怎么获取不到文件 帮忙看看什么问题

    var d = new FormData($("#file")[0]);

        $.ajax({
            url: '/Admin/Handlers/DocManage.ashx/?type=img_upload',
            type: 'post',
            data: d,
            async: false,
            cache: false,
            contentType: false,
            processData: false,
            success: function (data) {

            },
            error: function (data) {

            }
        });




            public string img_upload()
    {
        HttpContext context = HttpContext.Current;
        Entity.doc doc = new Entity.doc();
        long c = context.Request.InputStream.Length;
        System.Drawing.Image image = System.Drawing.Image.FromStream(context.Request.InputStream); 
        string name = doc.id+"_"+DateTime.Now.ToString("yyyyMMddHHmmssfff")+"_"+Common.Utils.BuildRandomStr(32);//重新命名图片
        image.Save(context.Server.MapPath("/image/" + name),System.Drawing.Imaging.ImageFormat.Jpeg);//保存为jpg格式
        image.Dispose();//释放
        doc.cover = "image/" + name;//新图片


        return "ok";

    }

FormData的参数为表单,不能直接是file对象。有些浏览器还会报错直接传递输入对象而不是表单

chrome没报错,但是控制台看没有提交数据。就算提交了数据,Request.InputStream是所有的数据,除了文件内容,还包含文件描述,分隔符之类的内容,直接存这些内容也会出错,图片打开不了

var d = new FormData($("#file")[0]);
改为

 var d = new FormData();
d.append('file',$("#file")[0].files[0])

服务器端

 HttpPostedFile f = context.Request.Files["file"];

参考:html5 ajax上传文件asp.net示例