图片上传 自动创建文件夹并重命名(带缩略图)
后台:

        [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

asp.net MVC上传图片完整方法的更多相关文章

  1. Asp.Net MVC 上传图片到数据库

    [读书笔记]Asp.Net MVC 上传图片到数据库(会的绕行)   之前上传图片的做法都是上传到服务器上的文件夹中,再将url保存到数据库.其实在MVC中将图片上传到数据库很便捷的事情,而且不用去存 ...

  2. 【读书笔记】Asp.Net MVC 上传图片到数据库(会的绕行)

    之前上传图片的做法都是上传到服务器上的文件夹中,再将url保存到数据库.其实在MVC中将图片上传到数据库很便捷的事情,而且不用去存url了.而且这种方式支持ie6(ie6不支持jquery自动提交fo ...

  3. T4 模板 : 一种提升ASP.NET MVC开发速度方法

    最近由于需要在框架中提供一些自定义模板的功能,找到了一篇博客,可惜似乎是翻译工具直接翻的,读不通顺,就试着自己翻译下,我不会完全翻译原文的句子,可能会对原文进行小范围的我认为更合适的句子并添加些注释, ...

  4. asp.net mvc Html.BeginForm()方法

    Html.BeginForm()方法将会输出<form>标签,而且必须以using包起来,如此便可在using程序代码最后退出时,让asp.net mvc帮你补上<form>标 ...

  5. 转:自定义ASP.NET MVC Html辅助方法

    在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...

  6. 【MVC】自定义ASP.NET MVC Html辅助方法

    在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...

  7. [转载]自定义ASP.NET MVC Html辅助方法 TagBuilder

    在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...

  8. Asp.net mvc 中Action 方法的执行(二)

    [toc] 前面介绍了 Action 执行过程中的几个基本的组件,这里介绍 Action 方法的参数绑定. 数据来源 为 Action 方法提供参数绑定的原始数据来源于当前的 Http 请求,可能包含 ...

  9. Asp.net mvc 中Action 方法的执行(一)

    [toc] 在 Aps.net mvc 应用中对请求的处理最终都是转换为对某个 Controller 中的某个 Action 方法的调用,因此,要对一个请求进行处理,第一步,需要根据请求解析出对应的 ...

随机推荐

  1. spring+mybatis整合读取不了配置文件

    报错如下: java.sql.SQLException: unkow jdbc driver : ${jdbc.url}其余错误就不贴了,主要原因是没有读取到配置文件 读取配置文件代码: <be ...

  2. [转]权限问题导致Nginx 403 Forbidden错误的解决方法

    权限问题导致Nginx 403 Forbidden错误的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-08-22 这篇文章主要介绍了权限问题导致Nginx 403 F ...

  3. AXIS最佳实践

    前言: Axis是apache一个开源的webservice服务,需要web容器进行发布.本节主要用于介绍使用Axis开发webservice,包括服务端的创建.webservice的部署.客户端的调 ...

  4. CentOS 6.5下配置iSCSI网络存储

    一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行 SCSI协议,使其能 ...

  5. Android 自定义事件监听器

    当我们自定义View的时候,如果需要返回值,那么就需要自定义一个监听器. 这里用一个自定义的数字选框为例. 首先定义view. 1.新建view,NumberKeyboardView.Java,自定义 ...

  6. 使用 Device Mapper来改变Docker容器的大小

    作者:Jérôme Petazzoni ( Docker 布道师) 译者:Mark Shao ( EMC 中国高级工程师) 如果在 CentOS . REHL . Fedor 或者其他默认没有 AUF ...

  7. 虚拟现实外包公司— VR开发编辑器意义重大 印证VR不仅服务于用户

    三大引擎制造商 Unity Technologies .Epic Games 和Crytek 讨论在自家产品中添加附件,方便开发商在虚拟现实中创作游戏.这会对许多人造成影响,特别是早已进入虚拟现实的先 ...

  8. (转)WCF开发框架形成之旅---WCF的几种寄宿方式

    WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...

  9. oracle ||,

    || oracle数据库中的 ||称为 "字符串连接符" 用于连接查询结果,如下: select trade_id,accept_date from A; ------------ ...

  10. Linux shell相关

    1 一些常见的问题及解决方法 <1> ssh登录不显示用户名跟路径 可能原因: ssh登录的用户没有配置shell 对应解决方案:在/etc/passwd文件对应用户那一行末尾添加/bin ...