asp.net MVC上传图片完整方法

Posted on 2013-10-30 10:46  小程序员也疯狂  阅读(2868)  评论(0)    收藏  举报
图片上传 自动创建文件夹并重命名(带缩略图)
后台:               
        [HttpPost]
        public ActionResult WanSell_UploadPicture(ProductGalleryModels picturegm)
        {

            var users = Session["onlineUsers"] as List<CurrentOnlineUsers>;
            string usename = users[0].CUserName.ToString();              //获取用户名
            string randomName = DateTime.Now.ToFileTime().ToString();   //系统当前时间为图片名称
            HttpPostedFileBase file = Request.Files["fileToUpload"];//获取客户端上传的图片
            string pictureName = file.FileName;                          //上传图片的原名
            string extensionName = System.IO.Path.GetExtension(pictureName);//获取扩展名
            int randomcode = BaseRandom.GetRandom(1000, 9999);                //产生随机数
            string newName = string.IsNullOrEmpty(pictureName.Trim()) ? "" : usename + randomcode + randomName + System.IO.Path.GetExtension(pictureName);                                                                //重命名图片
            if (picturegm.ImgDescription != null && picturegm.ImgDescription != "")     //附加判断图片描述是否为空
            {
                if (extensionName.ToLower() == "jpg" || extensionName.ToLower() == "bmp" || extensionName.ToLower() == "gif")   //判断图片格式
                {
                    string savePath = HttpContext.Server.MapPath("~/Content/Uploads/img/" + usename);     //原图图片保存位置
                    string smalfilepath = Server.MapPath("~/Content/Uploads/smallimg/" + usename);         //缩略图图片保存位置
                    if (!System.IO.Directory.Exists(savePath))
                    {
                        //如果路径不存在创建新文件夹
                        System.IO.Directory.CreateDirectory(savePath);
                    }
                    if (!System.IO.Directory.Exists(smalfilepath))
                    {
                        System.IO.Directory.CreateDirectory(smalfilepath);
                    }
                    file.SaveAs(savePath + '/' + newName);                                                                           //将上传的文件保存到指定的目录。
                    FileFolder.MakeThumbnail(savePath + '/' + newName, smalfilepath + '/' + newName, 68, 68, "Cut");
                    ViewData["messageBox"] = "上传成功";
                    return View("~/Views/RechargeMoney/RechargeSuccess.cshtml");
                }
                else 
                {
                    ModelState.AddModelError("", "图片格式应为jpg/bmp/gif");
                }
            }
            else
            {
                ModelState.AddModelError("", "请填写图片描述");
            }
            return View("~/Views/IWantSell/WanSell_UploadPicture.cshtml");
        }
        #endregion
Controller Code

 

缩略图类:
  1 #region 生成缩略图
  2 
  3         /**/
  4 
  5         /// <summary>
  6 
  7         /// 生成缩略图
  8 
  9         /// </summary>
 10 
 11         /// <param name="originalImagePath">源图路径(物理路径)</param>
 12 
 13         /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
 14 
 15         /// <param name="width">缩略图宽度</param>
 16 
 17         /// <param name="height">缩略图高度</param>
 18 
 19         /// <param name="mode">生成缩略图的方式</param>    
 20 
 21         public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
 22 
 23         {
 24 
 25             System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
 26 
 27             int towidth = width;
 28 
 29             int toheight = height;
 30 
 31             int x = 0;
 32 
 33             int y = 0;
 34 
 35             int ow = originalImage.Width;
 36 
 37             int oh = originalImage.Height;
 38 
 39             switch (mode)
 40 
 41             {
 42 
 43                 case "HW"://指定高宽缩放(可能变形)                
 44 
 45                     break;
 46 
 47                 case "W"://指定宽,高按比例                    
 48 
 49                     toheight = originalImage.Height * width / originalImage.Width;
 50 
 51                     break;
 52 
 53                 case "H"://指定高,宽按比例
 54 
 55                     towidth = originalImage.Width * height / originalImage.Height;
 56 
 57                     break;
 58 
 59                 case "Cut"://指定高宽裁减(不变形)                
 60 
 61                     if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
 62 
 63                     {
 64 
 65                         oh = originalImage.Height;
 66 
 67                         ow = originalImage.Height * towidth / toheight;
 68 
 69                         y = 0;
 70 
 71                         x = (originalImage.Width - ow) / 2;
 72 
 73                     }
 74 
 75                     else
 76 
 77                     {
 78 
 79                         ow = originalImage.Width;
 80 
 81                         oh = originalImage.Width * height / towidth;
 82 
 83                         x = 0;
 84 
 85                         y = (originalImage.Height - oh) / 2;
 86 
 87                     }
 88 
 89                     break;
 90 
 91                 default:
 92 
 93                     break;
 94 
 95             }
 96 
 97             //新建一个bmp图片
 98 
 99             System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
100 
101             //新建一个画板
102 
103             System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
104 
105             //设置高质量插值法
106 
107             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
108 
109             //设置高质量,低速度呈现平滑程度
110 
111             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
112 
113             //清空画布并以透明背景色填充
114 
115             g.Clear(System.Drawing.Color.Transparent);
116 
117             //在指定位置并且按指定大小绘制原图片的指定部分
118 
119             g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
120 
121                 new System.Drawing.Rectangle(x, y, ow, oh),
122 
123                 System.Drawing.GraphicsUnit.Pixel);
124 
125             try
126 
127             {
128 
129                 //以jpg格式保存缩略图
130 
131                 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
132 
133             }
134 
135             catch (System.Exception e)
136 
137             {
138 
139                 throw e;
140 
141             }
142 
143             finally
144 
145             {
146 
147                 originalImage.Dispose();
148 
149                 bitmap.Dispose();
150 
151                 g.Dispose();
152 
153             }
154 
155         }
156 
157         #endregion
缩略图 Code

 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3