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

图片上传 自动创建文件夹并重命名(带缩略图)
后台:
        [HttpPost]
public ActionResult WanSell_UploadPicture(ProductGalleryModels picturegm)
{ var users = Session["onlineUsers"] as List<CurrentOnlineUsers>;
string usename = users[].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(, ); //产生随机数
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, , , "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

缩略图类:
 #region 生成缩略图

         /**/

         /// <summary>

         /// 生成缩略图

         /// </summary>

         /// <param name="originalImagePath">源图路径(物理路径)</param>

         /// <param name="thumbnailPath">缩略图路径(物理路径)</param>

         /// <param name="width">缩略图宽度</param>

         /// <param name="height">缩略图高度</param>

         /// <param name="mode">生成缩略图的方式</param>    

         public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)

         {

             System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);

             int towidth = width;

             int toheight = height;

             int x = ;

             int y = ;

             int ow = originalImage.Width;

             int oh = originalImage.Height;

             switch (mode)

             {

                 case "HW"://指定高宽缩放(可能变形)                

                     break;

                 case "W"://指定宽,高按比例                    

                     toheight = originalImage.Height * width / originalImage.Width;

                     break;

                 case "H"://指定高,宽按比例

                     towidth = originalImage.Width * height / originalImage.Height;

                     break;

                 case "Cut"://指定高宽裁减(不变形)                

                     if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)

                     {

                         oh = originalImage.Height;

                         ow = originalImage.Height * towidth / toheight;

                         y = ;

                         x = (originalImage.Width - ow) / ;

                     }

                     else

                     {

                         ow = originalImage.Width;

                         oh = originalImage.Width * height / towidth;

                         x = ;

                         y = (originalImage.Height - oh) / ;

                     }

                     break;

                 default:

                     break;

             }

             //新建一个bmp图片

             System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);

             //新建一个画板

             System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);

             //设置高质量插值法

             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

             //设置高质量,低速度呈现平滑程度

             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

             //清空画布并以透明背景色填充

             g.Clear(System.Drawing.Color.Transparent);

             //在指定位置并且按指定大小绘制原图片的指定部分

             g.DrawImage(originalImage, new System.Drawing.Rectangle(, , towidth, toheight),

                 new System.Drawing.Rectangle(x, y, ow, oh),

                 System.Drawing.GraphicsUnit.Pixel);

             try

             {

                 //以jpg格式保存缩略图

                 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);

             }

             catch (System.Exception e)

             {

                 throw e;

             }

             finally

             {

                 originalImage.Dispose();

                 bitmap.Dispose();

                 g.Dispose();

             }

         }

         #endregion

缩略图 Code

上一篇:动态创建DAL层类的实例


下一篇:八、job管理