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

 更新时间:2017年01月22日 08:56:14   作者:先修客  
本文主要介绍了C# 最齐全的上传图片方法,方法里包括了图片大小限制、图片尺寸、文件内容等等的判断。具有很好的参考价值,下面跟着小编一起来看下吧

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

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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • C#中的Linq to Xml详解

    C#中的Linq to Xml详解

    这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml、查询并修改xml、监听xml事件、处理xml流等内容,需要的朋友可以参考下
    2015-01-01
  • C#使用RSA加密解密文件

    C#使用RSA加密解密文件

    这篇文章主要为大家详细介绍了C#使用RSA加密解密文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 关于C#调用C++dll传指针释放内存问题

    关于C#调用C++dll传指针释放内存问题

    这篇文章主要介绍了关于C#调用C++dll传指针释放内存问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • C#实现六大设计原则之迪米特法则

    C#实现六大设计原则之迪米特法则

    这篇文章介绍了C#实现六大设计原则之迪米特法则的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • C#获取项目指定目录下文件的方法

    C#获取项目指定目录下文件的方法

    这篇文章主要介绍了C#获取项目指定目录下文件的方法,涉及C#操作目录及文件的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#实现简易计算器功能(1)(窗体应用)

    C#实现简易计算器功能(1)(窗体应用)

    这篇文章主要为大家详细介绍了C#实现简易计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • DataGridView自定义单元格表示值、Error图标显示的方法介绍

    DataGridView自定义单元格表示值、Error图标显示的方法介绍

    这篇文章介绍了DataGridView自定义单元格表示值、Error图标显示的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • C#警惕匿名方法造成的变量共享实例分析

    C#警惕匿名方法造成的变量共享实例分析

    这篇文章主要介绍了C#警惕匿名方法造成的变量共享,以实例形式分析了C#的匿名方法造成变量共享的原因及对应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • 深入浅析c#静态多态性与动态多态性

    深入浅析c#静态多态性与动态多态性

    多态就是多种形态,也就是对不同对象发送同一个消息,不同对象会做出不同的响应。这篇文章主要介绍了c#静态多态性与动态多态性的相关知识,需要的朋友可以参考下
    2018-09-09
  • C#判断多个文本框是否为空的方法

    C#判断多个文本框是否为空的方法

    这篇文章主要介绍了C#判断多个文本框是否为空的方法,可实现对多个文本框的遍历、判断及提示等功能,需要的朋友可以参考下
    2015-06-06

最新评论