C# 最齊全的上傳圖片方法

方法裏包括了圖片大小限制、圖片尺寸、文件內容等等的判斷。。。json

該案例是mvc下的demo,支持單張圖片上傳。

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));
        }

通常處理程序

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的大小!");
        }
    }
相關文章
相關標籤/搜索