方法里包括了图片大小限制、图片尺寸、文件内容等等的判断。。。
该案例是mvc下的demo,支持单张图片上传。
代码如下 | 复制代码 |
publicActionResult Upload() { stringimgurl =""; foreach(stringkeyinRequest.Files) { //这里只测试上传第一张图片file[0] HttpPostedFileBase file0 = Request.Files[key]; //转换成byte,读取图片MIME类型 Stream stream; intsize = file0.ContentLength / 1024;//文件大小KB if(size > 1024) { returnContent(ReturnMsg(Enum_Return.失败,"图片不能超过1M:",null)); } byte[] fileByte =newbyte[2];//contentLength,这里我们只读取文件长度的前两位用于判断就好了,这样速度比较快,剩下的也用不到。 stream = file0.InputStream; stream.Read(fileByte, 0, 2);//contentLength,还是取前两位 //获取图片宽和高 //System.Drawing.Image image = System.Drawing.Image.FromStream(stream); //int width = image.Width; //int height = image.Height; stringfileFlag =""; if(fileByte !=null&& fileByte.Length > 0)//图片数据是否为空 { fileFlag = fileByte[0].ToString() fileByte[1].ToString(); } string[] fileTypeStr = {"255216","7173","6677","13780"};//对应的图片格式jpg,gif,bmp,png if(fileTypeStr.Contains(fileFlag)) { stringaction = Request["action"]; stringpath ="/uploads/"; switch(action) { case"headimage": path ="headimage/"; break; case"blogtype": path ="blogtype/"; break; } stringfullpath = path UserInfo.userID "/"; if(!Directory.Exists(Server.MapPath(fullpath))) { Directory.CreateDirectory(Server.MapPath(fullpath)); } Request.Files[key].SaveAs(Server.MapPath(fullpath Request.Files[key].FileName)); imgurl = fullpath Request.Files[key].FileName; } else { returnContent(ReturnMsg(Enum_Return.失败,"图片格式不正确:"fileFlag,null)); } stream.Close(); } returnContent(ReturnMsg(Enum_Return.成功,"上传成功", imgurl)); } |
一般处理程序
代码如下 | 复制代码 |
publicvoidProcessRequest(HttpContext context) { context.Response.ContentType ="application/json"; HttpPostedFile _upfile = context.Request.Files["File"]; if(_upfile.ContentLength < 500000) { if(string.IsNullOrEmpty(_upfile.FileName)) { context.Response.Write("请上传图片"); } stringfileFullname = _upfile.FileName; stringdataName = DateTime.Now.ToString("yyyyMMddhhmmss"); stringfileName = fileFullname.Substring(fileFullname.LastIndexOf("\") 1); stringtype = fileFullname.Substring(fileFullname.LastIndexOf(".") 1); if(type =="bmp"|| type =="jpg"|| type =="gif"|| type =="JPG"|| type =="BMP"|| type =="GIF") { _upfile.SaveAs(HttpContext.Current.Server.MapPath("photo") "\" dataName "." type); HttpCookie cookie =newHttpCookie("photo"); context.Response.Write("上传成功"); } else { context.Response.Write("支持格式:|jpg|gif|bmp|"); } } else { context.Response.Write("你的图片已经超过500K的大小!"); } } |