C# 最齐全的上传图片方法

作者:袖梨 2022-06-25

方法里包括了图片大小限制、图片尺寸、文件内容等等的判断。。。

该案例是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的大小!");

    }

  }

 

相关文章

精彩推荐