方法里包括了圖片大小限制、圖片尺寸、文件內容等等的判斷。。。
該案例是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