方法里包括了图片大小限制、图片尺寸、文件内容等等的判断。。。
该案例是mvc下的demo,支持单张图片上传。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
public ActionResult Upload() { string imgurl = "" ; foreach ( string key in Request.Files) { //这里只测试上传第一张图片file[0] HttpPostedFileBase file0 = Request.Files[key]; //转换成byte,读取图片MIME类型 Stream stream; int size = file0.ContentLength / 1024; //文件大小KB if (size > 1024) { return Content(ReturnMsg(Enum_Return.失败, "图片不能超过1M:" , null )); } byte [] fileByte = new byte [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; string fileFlag = "" ; 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)) { string action = Request[ "action" ]; string path = "/uploads/" ; switch (action) { case "headimage" : path = "headimage/" ; break ; case "blogtype" : path = "blogtype/" ; break ; } string fullpath = 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 { return Content(ReturnMsg(Enum_Return.失败, "图片格式不正确:" fileFlag, null )); } stream.Close(); } return Content(ReturnMsg(Enum_Return.成功, "上传成功" , imgurl)); } |
一般处理程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public void ProcessRequest(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( "请上传图片" ); } string fileFullname = _upfile.FileName; string dataName = DateTime.Now.ToString( "yyyyMMddhhmmss" ); string fileName = fileFullname.Substring(fileFullname.LastIndexOf( "\\" ) 1); string type = 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 = new HttpCookie( "photo" ); context.Response.Write( "上传成功" ); } else { context.Response.Write( "支持格式:|jpg|gif|bmp|" ); } } else { context.Response.Write( "你的图片已经超过500K的大小!" ); } } |
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!
原文链接:http://www.cnblogs.com/liujiaxian/p/6336805.html