后台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"];